2014-09-05 49 views
0

我有一个自定义指令的元素。

<div my-directive data-progress="0"></div> 

我的指令如下。

return { 

    scope: { 
     progress: '@' 
    } 

    link: function($scope, $element, $attributes){ 

     $scope.$watch('progress', function(newVal){ 
      // do stuff with newVal 
     }) 

    } 
} 

我遇到的问题是,当元素的数据进度被外部源(如jQuery)改变时,它永远不会触发手表。我也尝试使用$ attributes。$观察,但没有触发枯萎。这是一个自定义进度条指令,所以外部源将更新数据进度,我需要手表才能触发,以便我可以正确更新进度条。

+0

也就是说不可能有角度。 Angular无法知道属性在摘要周期之外发生了变化。 – 2014-09-08 09:31:54

回答

0

您需要使用,因为你指定它为属性观察(使用@),

$attributes.$observe("progress", function(newVal){ 

}); 

下面是关于它的文档:https://docs.angularjs.org/api/ng/type/ $ compile.directive.Attributes#$观察

+0

正如我之前所说的那样,它只会在指令加载时触发一次。之后,它不会在值更改时触发。它唯一的工作时间是如果我在指令中改变值,而不是我想要做的。 – selanac82 2014-09-05 17:43:18