簡體   English   中英

角度指令屬性未檢測到變化

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM