01/10/2018, 14:45
Tại sao angular promise một cái cần $apply một cái thì không?
Mình viết hai cái angular factory promise theo hai kiểu khác nhau tại sao một cái thì phải cần $apply mới fire còn một cái thì không ? ace nào giải thích giúp?
Chi tiết như sau :
app.factory('HelloWorld', function ($q, $timeout) {
var getMessages = function () {
var deferred = $q.defer();
$timeout(function () {
deferred.resolve(['Hello', 'world!']);
}, 2000);
return deferred.promise;
};
return {
getMessages: getMessages
};
});
app.factory('HelloWorld2', function ($timeout) {
var that = {};
that.GetMessages = function () {
return new Promise(function (resolve, reject) {
$timeout(function () {
resolve(['Hello2', 'world2!']);
}, 2000);
})
}
return that;
});
controller :
$scope.msg = " chờ 2000 ms và xem kết quả ";
$scope.msg2 = " chờ 2000 ms và xem kết quả ";
HelloWorld
.getMessages()
.then(function (x) {
$scope.msg = x;
//em này không cần $scope.$apply()
})
HelloWorld2.GetMessages()
.then(function (x) {
$scope.msg2 = x;
$scope.$apply()
//em này phải có $scope.$apply() // Why????
})
html :
{{msg}}<br>
{{msg2}}<br>
Bài liên quan