Запустить $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;
})

Я не знаю, правильно ли это сделать, но это работает.

Другие вопросы по тегам