Все:
Я новичок в угловом дайджесте, прямо сейчас, когда я использую Promise, в его тогда функции я должен использовать $ scope. $ Digest(), чтобы изменение переменной области вступало в силу в другом месте, например:
Здесь я использую Promise для эмуляции запроса $ http, моя путаница в $ scope.getdata, поэтому мне нужно вызвать $ scope. $ Digest(), я думал, что $ scope.disable следует смотреть угловым автоматически.
var app = angular.module("vp", []);
app
.service("srh", function($http){
var busy = false;
this.get = function(url){
if(!busy){
busy = true;
var p = new Promise(function(res, rej){
$timeout(function(){
res("data is fetched");
}, 3000);
})
.then(function(data){
busy = false;
return data;
}, function(data){
busy = false;
return data;
});
return p;
}else {
return null;
}
}
})// end of service
.controller("main", function($scope, srh){
$scope.disable = false;
$scope.getdata = function(){
var dp = srh.get("");
if( dp ) {
$scope.disable = true;
dp.then(function(data){
console.log(data);
$scope.disable = false;
$scope.$digest()
})
}
}
})
Используйте $q
угловые обещания, которые будут внутренне обрабатывать все требования к дайджесту.
Всякий раз, когда вы используете события за пределами углового ядра, которые изменяют область действия, вам нужно указать угловое значение, чтобы оно могло обновлять вид