私は、ボタンフォームを配置するために使用する角度の指示を持っています。テンプレートは、ユーザーがそれを見る必要があるまで隠されています。これは単体で動作するシンプルなテンプレートですが、大きなフォームに結合するとテンプレートが表示されません。私はこれを実行すると角のないテンプレートがng-hideで表示されない
<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>
:
.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);
}
}
};
});
そして、作品のhtml:
<div button-toggle my-btn-arr=0></div>
と動作しませんHTMLスニペットここ
はディレクティブですhtmlの部分(これはテンプレートと無関係なコントローラによって制御されます)では、私はこのエラーを受け取ります:
Error: [$compile:nonassign] Expression '0' used with directive 'buttonToggle' is non-assignable!
そのテンプレート機能を範囲内にまとめてください。いいえ。私は
link: function(scope) {
scope.myBtnTxt = ["AND", "OR", "NOT"];
scope.click = function() {
scope.$apply (function() {
scope.myBtnArr = (scope.myBtnArr < 2 ? scope.myBtnArr + 1 : 0);
})
}
}
が、私はこのエラーが出る...それを行うとき:
Error: [$rootScope:inprog] $apply already in progress
だから、それは明らかに間違ってスコープを包んで問題だが、それを修正する方法がわかりません。何かご意見は?
これは私が間違っていたかもしれないところの私の推測でした...私はこれを試してみましょう。 –
それは働いた!そしてあなたが正しいです、私は片方向バインディングが必要でした。ありがとう! –