Javascript AngularJS范围没有注意到更改

Javascript AngularJS范围没有注意到更改,javascript,angularjs,Javascript,Angularjs,我有一个$scope字段,用于中的ng src属性: 该字段初始化如下: $scope.myJsWrapper = new MyJsWrapper(); $scope.myJsWrapper.getImageUrl(function (imageDataUrl) { $scope.imageDataUrl = imageDataUrl; }); 下面是外部JS函数: function MyJsWrapper() { this.getImageUrl = function (wi

我有一个
$scope
字段,用于
中的
ng src
属性:

该字段初始化如下:

$scope.myJsWrapper = new MyJsWrapper();
$scope.myJsWrapper.getImageUrl(function (imageDataUrl) {
    $scope.imageDataUrl = imageDataUrl;
});
下面是外部JS函数:

function MyJsWrapper() {
    this.getImageUrl = function (withImage) {
        thirdPartyJsFile.getData().then(function (data) {
            var imageDataUrl = thirdPartyJsFile.getDataUrl(data, "image/png");
            if (withImage) {
                withImage(imageDataUrl);
            }
         });
    }
}
这是一个复杂的方式,但第三方应用程序迫使我这样做。 我的问题是angular没有注意到字段
imageDataUrl
的变化。因此图像不会更新。 我甚至尝试了该字段的
$scope.$watch
,但没有触发。 有趣的是,当我在浏览器中滚动或单击任意位置(以及
$scope.$watch
)时,它会发生变化


为什么angular无法识别字段更改,我需要做什么才能使其工作?

如果是第三方库正在更新您的
$scope
,为了让angular上下文知道您的更改,您需要调用
$scope.$apply()

在你的回电中

$apply()
用于从外部执行AngularJS中的表达式 AngularJS框架。(例如,从浏览器DOM事件, setTimeout、XHR或第三方库)。因为我们正在召唤 我们需要AngularJS框架来执行适当的范围生命周期 异常处理,执行监视


如果第三方库正在更新您的
$scope
,为了让angular context知道您的更改,您需要调用
$scope.$apply()

在你的回电中

$apply()
用于从外部执行AngularJS中的表达式 AngularJS框架。(例如,从浏览器DOM事件, setTimeout、XHR或第三方库)。因为我们正在召唤 我们需要AngularJS框架来执行适当的范围生命周期 异常处理,执行监视


更改图像源后是否尝试调用
$scope.$apply()
?更改图像源后是否尝试调用
$scope.$apply()
function MyJsWrapper() {
    this.getImageUrl = function (withImage) {
        thirdPartyJsFile.getData().then(function (data) {
            var imageDataUrl = thirdPartyJsFile.getDataUrl(data, "image/png");
            if (withImage) {
                withImage(imageDataUrl);
            }
         });
    }
}
$scope.$apply(function() {
    $scope.imageDataUrl = imageDataUrl;
});