我正面临角度指令的问题。
我想要一个指令来根据属性“改变自己”。不幸的是,The属性的观察者从未要求改变。
这是一个小提琴JS,它解释了我的情况:http://jsfiddle.net/gmjm84m1/ (无论何时你改变'某事',手表都没有反应,如果你检查'这里',你可以看到内容属性改变了......)
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";
}
有人可以告诉我为什么吗?也许这是错误的方式?
答案 0 :(得分:1)
修复方法不好:
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);
});
}