如何使用angularjs通过指令更新元素的属性

时间:2013-06-17 20:48:13

标签: angularjs angularjs-directive

我在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');
                    });
                }
            };
    });


1 个答案:

答案 0 :(得分:4)

AngularJS有一个ngDisabled指令,可用于在列表状态和表达式之间建立链接:

 <select ng-repeat="el in elms" ng-disabled="elms.length == 0">
      <option>make a selection</option>
 </select>