我想使用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还没有走得很远。
答案 0 :(得分:0)
This answer帮了忙。安全$ apply函数就可以了。 我将该函数添加到我的控制器并将其剪切添加到我的node.js函数:
var scope = angular.element($("#angularDOMElement")).scope();
scope.safeApply(function(){
myLegacyVar = res;
})
我不知道这是否是正确的方法,但它的工作原理。