2014-09-05 48 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