当变量被node.js函数改变时触发$digest

Trigger $digest when variable changed by node.js function

本文关键字:digest 改变 函数 变量 node js      更新时间:2023-09-26

我想用AngularJS做一个node-webkit应用。到目前为止还没有问题,但是当我想让Angular使用这个答案中描述的方法来监视一个"遗留变量"时,我只得到一个Error: [$rootScope:inprog]

我将node.js函数包装成$scope.$apply(),像这样:

$scope.$apply(myNodeModule("test", function(err, res) {
        if (err) {return console.log(err)}
        myLegacyVar = res;
}));

和监视(全局)myLegacyVar变量,如前面提到的答案所述:

function () {
            return $window.myLegacyVar
        }, function(n,o){
            console.log("changed ",n);
            $scope.data = n;
        }
);

所有的代码都在我的Angular控制器函数中。

函数是异步的,所以我猜它可能与此有关?还是我在$apply中开始的这个函数可能导致我的错误?

我只是现在毫无头绪,我最近才开始使用AngularJS,几个小时的谷歌还没有得到我的很远。

这个回答很有帮助。安全的$apply函数完成了这个任务。我将这个函数添加到控制器中并将这个片段添加到node.js函数中:

var scope = angular.element($("#angularDOMElement")).scope();
scope.safeApply(function(){
    myLegacyVar = res;
})

我不知道这样做是否正确,但它是有效的。