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){

});