Tôi có chỉ thị góc mà tôi đang sử dụng để đặt biểu mẫu nút. Mẫu được ẩn cho đến khi người dùng cần xem nó. Đó là một mẫu đơn giản hoạt động độc lập, nhưng khi tôi kết hợp nó thành dạng lớn hơn, mẫu không xuất hiện.Mẫu góc không hiển thị với ng-hide
Đây là chỉ thị:
.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);
}
}
};
});
Sau đó html hoạt động:
<div button-toggle my-btn-arr=0></div>
Và đoạn mã html mà không hoạt động:
<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>
Khi tôi chạy này html trong phần lớn hơn (được điều khiển bởi một bộ điều khiển không liên quan đến mẫu) Tôi nhận được lỗi này:
Error: [$compile:nonassign] Expression '0' used with directive 'buttonToggle' is non-assignable!
Vì vậy, chỉ cần bọc hàm mẫu đó trong phạm vi. $ Apply phải không? Không. Khi tôi làm điều đó ...
link: function(scope) {
scope.myBtnTxt = ["AND", "OR", "NOT"];
scope.click = function() {
scope.$apply (function() {
scope.myBtnArr = (scope.myBtnArr < 2 ? scope.myBtnArr + 1 : 0);
})
}
}
tôi nhận được lỗi này:
Error: [$rootScope:inprog] $apply already in progress
Vì vậy, nó rõ ràng là một vấn đề với sai gói phạm vi, nhưng không chắc chắn làm thế nào để sửa chữa nó. Có suy nghĩ gì không?
Đây là suy đoán của tôi về nơi tôi có thể đã đi sai ... hãy để tôi thử điều này và lấy lại cho bạn. –
Đã hoạt động! Và bạn nói đúng, tôi chỉ cần một ràng buộc một chiều. Cảm ơn! –