如何在Angular中有条件地添加属性(非属性值)

时间:2017-02-09 11:23:56

标签: angularjs

我看到很多问题,有人询问如何在Angular中添加属性,但所有答案都使用ng-attr解决方案,据我所知只能设置属性。如果条件不满足,我根本不希望我的属性出现。

我该怎么做?

2 个答案:

答案 0 :(得分:0)

JQuery's attr() method允许您设置属性名称和值

w3Schools有一个example of setting an attribute on click,可以很容易地适应自定义指令中的其他事件/条件。

<强>更新...

Here is a somewhat trivial example有条件地将disabled属性添加到input(文本框),如果其中包含的字词长度超过8个字符。

JS:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.words = ["Floral", "Curious", "Blunder", "Molecular", "Complicated", 
                  "Drops", "Bumper", "Promise", "Clean", "Doubtless" ];
});

app.directive('disableLongWords', function($timeout) {
  return {
    restrict: "E",
    link: function(scope, iElem, iAttrs) {
      console.log(scope.word);
      if (scope.word.length > 8) {
        iElem.children().attr("disabled", "disabled");
      }
    }
  }
});

HTML:

<body ng-controller="MainCtrl">
  <disable-long-words ng-repeat="word in words">
    <input type=text ng-model="word">
    <br>
  </disable-long-words>
</body>

取决于您想要设置的属性以及可能完全没有用的条件,但这是我在提出原始建议时所考虑的事情。

答案 1 :(得分:0)

您可以使用该元素    angular.element(element);

https://docs.angularjs.org/api/ng/function/angular.element

在此之后你可以使用 .attr()方法。