Mam dyrektywę kątową, której używam do umieszczania formularza przycisku. Szablon jest ukryty, dopóki użytkownik go nie zobaczy. Jest to prosty szablon, który działa samodzielnie, ale gdy go połączę w większą formę, szablon się nie pojawi.Szablon kątowy nie jest wyświetlany z ng-hide
Oto dyrektywy:
.directive('buttonToggle', function() {
return {
restrict: 'A',
scope: {
myBtnArr: "="
},
template: '<button ng-click="click()">{{ myBtnTxt[myBtnArr] }}</button>',
link: function(scope) {
scope.myBtnTxt = ["AND", "OR", "NOT"];
scope.click = function() {
scope.myBtnArr = (scope.myBtnArr < 2 ? scope.myBtnArr + 1 : 0);
}
}
};
});
Następnie html, który działa:
<div button-toggle my-btn-arr=0></div>
I urywek html że nie działa:
<tr ng-show="rowsShown >= 2"><td>Search by:</td><td><div button-toggle my-btn-arr=0></div><select ng-model="selection2" ng-options="option.text for option in options"></select><input type="text" size="20" ng-model="queryF2"><ng-md-icon icon="add_circle_outline" style="fill:#a9a9a9" ng-click="addSearchField();"></ng-md-icon> <ng-md-icon icon="remove_circle_outline" style="fill:#a9a9a9" ng-click="removeSearchField();"></ng-md-icon></td></tr>
Kiedy uruchomić ten html w większym częściowym (który jest kontrolowany przez kontroler niezwiązany z szablonem) Otrzymuję ten błąd:
Error: [$compile:nonassign] Expression '0' used with directive 'buttonToggle' is non-assignable!
Po prostu zapakuj tę funkcję szablonu w zakresie. $ Apply right? Nie. Kiedy to zrobić ...
link: function(scope) {
scope.myBtnTxt = ["AND", "OR", "NOT"];
scope.click = function() {
scope.$apply (function() {
scope.myBtnArr = (scope.myBtnArr < 2 ? scope.myBtnArr + 1 : 0);
})
}
}
otrzymuję ten błąd:
Error: [$rootScope:inprog] $apply already in progress
Więc jest to oczywiście problem z nieprawidłowo owijania zakresu, ale nie wiem jak to naprawić. jakieś pomysły?
To było moje przypuszczenie co do tego, gdzie mogłem pójść źle ... pozwól mi spróbować i wrócić do ciebie. –
Zadziałało! I masz rację, potrzebowałem tylko jednokierunkowego wiązania. Dzięki! –