我在AngularJS中有一个非常简单的案例:
<select ng-repeat="el in elms" disabled="disabled" remove-disable>
<option>make a selection</option>
</select>
最初我的选择是空的,所以我添加了禁用attr以避免让人们点击它。
当ajax调用完成后,select会显示我想删除disable属性的选项列表。
看起来很直接,对吗?但我所看到的只是使用$ watch的方法而不是这种情况。
我从jQuery的角度来看它,在ajax调用之后查看DOM,找到元素并删除attr。像这样:
$('select').removeAttr('disabled');
不幸的是我不想做jQuery,我想用一个指令来做,因为那是为了什么。有角度的人说所有的DOM操作都应该通过指令完成,所以我想知道如何操作。
enrollmentModule.directive('removeDisable', function () {
return {
restrict: 'A',
scope: {
ngModel : '='
},
link: function (scope, element, attrs) {
console.log('no people yet');
if (element[0].complete) {
console.log('element finish rendering');
};
scope.$watch(attrs.ngModel, function () {
console.log('agents arrived');
});
}
};
});
答案 0 :(得分:4)
AngularJS有一个ngDisabled指令,可用于在列表状态和表达式之间建立链接:
<select ng-repeat="el in elms" ng-disabled="elms.length == 0">
<option>make a selection</option>
</select>