所有
我对角度摘要很新,现在,当我使用Promise时,在其函数中,我必须使用$ scope。$ digest()使范围变量更改在其他地方生效,例如:
这里我使用Promise来模拟$ http请求,我的混淆在于$ scope.getdata,为什么我需要调用$ scope。$ digest(),我认为应该通过angular观察$ 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()
})
}
}
})