/ / Извикайте метода AngularJs отвън без нужда от $ digest - angularjs, angularjs-scope

Извикайте метода AngularJs отвън без нужда от $ digest - angularjs, angularjs-scope

Когато се извиква метод от външни AngularJs трябва да се позове $ digest / $ се прилагат, но аз не искам да се грижи за това.Има ли добър начин да направите това?

<button ng-click="sayHello()">greet</button>
{{greeting}}

//This works fine!
$scope.sayHello = function () {
$scope.greeting = "Hello!";
};

//This needs a $digest!
$scope.sayHello = function () {
//setTimeout simulates invokation from outside AngularJs.
setTimeout(function () {
$scope.greeting = "Hello!";
//I don"t want to think about $digest();
//So, how to do this without the $digest?
$scope.$digest(); //or $scope.$apply();
}, 1000);
};

Отговори:

2 за отговор № 1

За вашия конкретен случай на setTimeout бихте го направилиискате да използвате вграденото време за $ $. В други случаи (например JQuery събития) можете да увиете кода си в приложим блок, като го вдигнете в цикъла на смилане на AngularJS така:

setTimeout(function () {
$scope.$apply(function(){
//Your Code goes here
}
}, 1000);