Javascript 静态属性更改时触发$scope.$watch
我有一个元素,上面有一个自定义指令Javascript 静态属性更改时触发$scope.$watch,javascript,jquery,angularjs,angularjs-directive,Javascript,Jquery,Angularjs,Angularjs Directive,我有一个元素,上面有一个自定义指令 <div my-directive data-progress="0"></div> 我遇到的问题是,当外部源(如jQuery)更改元素上的数据进度时,它永远不会触发监视。我还尝试使用$attributes.$observe,但这不会触发wither。这是一个自定义进度条指令,因此外部源将更新数据进度,我需要启动监视,以便正确更新进度条 您需要使用observe,因为您(通过使用@)将其指定为属性 这是关于它的文档:$compile.
<div my-directive data-progress="0"></div>
我遇到的问题是,当外部源(如jQuery)更改元素上的数据进度时,它永远不会触发监视。我还尝试使用$attributes.$observe,但这不会触发wither。这是一个自定义进度条指令,因此外部源将更新数据进度,我需要启动监视,以便正确更新进度条 您需要使用observe,因为您(通过使用@)将其指定为属性
这是关于它的文档:$compile.directive.Attributes#$observe,正如我之前尝试的那样,它在加载指令时只会触发一次。之后,当值更改时,它不会激发。它唯一有效的时候是,如果我改变指令中的值,而不是我不想做的,这在angular中是不可能的。Angular无法知道该属性已在摘要循环之外更改。
return {
scope: {
progress: '@'
}
link: function($scope, $element, $attributes){
$scope.$watch('progress', function(newVal){
// do stuff with newVal
})
}
}
$attributes.$observe("progress", function(newVal){
});