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

时间:2014-08-14 23:46:30

标签: javascript node.js angularjs node-webkit

我想使用AngularJS使用node-webkit创建一个应用程序。 到目前为止没有问题,但是当我希望Angular使用this answer中描述的方法监视“遗留变量”时,我只得到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,几个小时的googleing还没有走得很远。

1 个答案:

答案 0 :(得分:0)

This answer帮了忙。安全$ apply函数就可以了。 我将该函数添加到我的控制器并将其剪切添加到我的node.js函数:

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

我不知道这是否是正确的方法,但它的工作原理。