[英]Undetected change on angular directive attribute
我遇到了角度指令的問題。
我希望指令根據屬性“自行更改”。 不幸的是,“屬性”上的觀察者從未聲明過更改。
這是一個小提琴JS,它解釋了我的情況: http : //jsfiddle.net/gmjm84m1/ (無論您何時更改“某物”,手表都不會做出反應,如果您檢查“此處”,則可以看到content屬性已更改) ...)
的HTML
<div ng-app="myDirective" ng-controller="x">
<div content="{{something}}" my-directive>
<p>here</p>
</div>
<p>{{something}}</p>
<input type="text" ng-model="something"></p>
JS:
angular.module('myDirective', []).directive('myDirective', function () {
return {
restrict: 'A',
link: function (scope, element, attrs) {
scope.$watch(attrs.content, function (v) {
console.log('value changed, new value is: ' + v);
});
}
};
});
function x($scope) {
$scope.something = "yolo";
}
有人可以告訴我為什么嗎? 也許這是錯誤的方式?
不好的解決方法:
restrict: 'A',
link: function (scope, element, attrs) {
scope.$watch(function () { return attrs.content }, function (v) {
console.log('value changed, new value is: ' + v);
});
}
修復的好方法:
restrict: 'A',
scope: {
content: '@'
},
link: function (scope, element, attrs) {
scope.$watch('content', function (v) {
console.log('value changed, new value is: ' + v);
});
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.