Запустить $digest при изменении переменной функцией node.js
Я хочу сделать приложение с помощью node-webkit, используя AngularJS. Пока проблем нет, но когда я хочу, чтобы 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, часы поисков Google не достигли моей цели.
1 ответ
Этот ответ помог. Безопасная функция $apply сделала свое дело. Я добавил эту функцию в свой контроллер и добавил ее в мою функцию node.js:
var scope = angular.element($("#angularDOMElement")).scope();
scope.safeApply(function(){
myLegacyVar = res;
})
Я не знаю, правильно ли это сделать, но это работает.