Ho una direttiva angolare che sto usando per posizionare un modulo di pulsante. Il modello è nascosto fino a quando l'utente non ha bisogno di vederlo. È un modello semplice che funziona da solo, ma quando lo combino nella forma più grande il modello non appare.Modello angolare non visualizzato con ng-hide
Ecco la direttiva:
.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);
}
}
};
});
Poi il codice HTML che funziona:
<div button-toggle my-btn-arr=0></div>
E il frammento di codice HTML che non funziona:
<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>
Quando eseguo questo html nel partial più grande (che è controllato da un controller non correlato al modello) ottengo questo errore:
Error: [$compile:nonassign] Expression '0' used with directive 'buttonToggle' is non-assignable!
Quindi racchiudere la funzione di modello in ambito. $ Applicare? No. Quando faccio che ...
link: function(scope) {
scope.myBtnTxt = ["AND", "OR", "NOT"];
scope.click = function() {
scope.$apply (function() {
scope.myBtnArr = (scope.myBtnArr < 2 ? scope.myBtnArr + 1 : 0);
})
}
}
ottengo questo errore:
Error: [$rootScope:inprog] $apply already in progress
Quindi è ovviamente un problema con avvolgimento in modo non corretto il campo di applicazione, ma non è sicuro come risolvere il problema. qualche idea?
Questa era la mia ipotesi su dove potrei aver sbagliato ... fammi provare questo e tornare da te. –
Ha funzionato! E hai ragione, avevo solo bisogno di un legame unidirezionale. Grazie! –