在下面的示例中,如何将 myVar 设置为异步服务方法返回的值
angular.extend(this, {
myVar: (function() {
getVal();
})()
});
function getVal() {
var d = $q.defer();
MyFactory.Get()
.then(function (resp) {
d.resolve(resp.data);
});
return d.promise; // myVar should equal resp.data
};
我想我表现出我对承诺/延期缺乏理解,所以建议会很棒。
由于 myVar 是一个变量,您可以从控制器中的任何位置设置它。在初始化中,您可以将其分配给回退值或将其设置为未定义。并在异步调用成功后设置它。
angular.extend(vm, {
myVar: 'fallback'
});
或:
angular.extend(vm, {
});
然后:在控制器中:
getVar();
function getVar() {
getVal().then(function(data){
vm.myVar = data;
});
}
function getVal() {
var d = $q.defer();
MyFactory.Get()
.then(function (resp) {
d.resolve(resp.data);
});
return d.promise; // myVar should equal resp.data
};
或更有效:
getVal();
function getVal() {
MyFactory.Get()
.then(function (resp) {
vm.myVar = resp.data;
});
};
将this
更改为vm
,以消除与关键字可能引发this
冲突。