【发布时间】:2015-09-21 22:50:03
【问题描述】:
我有 angular 项目的这个服务文件的一部分,问题是我不能从 promise.then 函数返回值到 main 函数.. 这是代码
angular.module('starter.services', [])
.factory('Services', function ($http,$q) {
var def = $q.defer();
// Might use a resource here that returns a JSON array
$http.get('JSONFILE').then(function (data) {
def.resolve(data.data);
});
this.result ={};
var var1 = def.promise;
var1.then(function (data){
this.result = data;
console.log(this.result);
});
// Some fake testing data
console.log(this.result);
return {
all: function () {
return var1;
},
remove: function (service) {
var1.splice(var1.indexOf(service), 1);
},
get: function (serviceId) {
for (var i = 0; i < var1.length; i++) {
if (var1[i].id === parseInt(serviceId)) {
return var1[i];
}
}
return null;
}
};
});
this.result 将在 promise.then 之外返回空对象,但在其中获取正确的数据。
【问题讨论】:
-
1.
then函数内的this不会是您认为的this。 2.你在returned对象中使用var1是完全无效的,需要大量重写
标签: javascript angularjs angular-promise