我看到很多问题,有人询问如何在Angular中添加属性,但所有答案都使用ng-attr
解决方案,据我所知只能设置值属性。如果条件不满足,我根本不希望我的属性出现。
我该怎么做?
答案 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()
方法。