角度指令属性上未检测到的更改

时间:2015-07-16 11:40:45

标签: javascript angularjs angularjs-directive

我正面临角度指令的问题。

我想要一个指令来根据属性“改变自己”。不幸的是,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";
}

有人可以告诉我为什么吗?也许这是错误的方式?

1 个答案:

答案 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);
        });
    }