我写了一个角度服务,它应该通过http加载客户详细信息并存储它们以供将来使用(以单例模式)。
但是,当http调用成功返回时,我想要注入数据的变量是未定义的,并且会引发错误。
以下是代码:
NBApp.service("serverDataService", ['$http', '$q', function ($http, $q) {
var currentMemberDetails = [];
this.currentMember = function (){
if (this.currentMemberDetails.length>0)
return this.currentMemberDetails[0];
return null;
};
this.getMemberDetails = function (cardId) {
//TBD - call members details web service
var deferred = $q.defer();
$http({
method: 'GET',
url: 'resources/customer.json'
}).then
(
function success(response) {
this.currentMemberDetails.push(response.data);
deferred.resolve(data);
},
function failure(response) {
deferred.reject(response);
}
);
return deferred.promise;
};
}]);
currentMemberDetails
未定义,如chrome dev控制台所示。
答案 0 :(得分:1)
而不是
this.currentMemberDetails.push(response.data);
使用
currentMemberDetails.push(response.data);