我有一个 UserApplications 对象,它向服务器查询用户注册的应用程序列表,如下所示:
data.factory('UserApplications', function($resource){
return $resource('/users-rs/api/getapplications/:locale',{},{
query: {method: 'GET', params: {locale: 'locale'}, isArray: true}
});
});
我在另一个服务中调用它,并希望使用 angular-localstorageservice 模块(https://github.com/grevory/angular-local-storage)将数据保存为 JSON 字符串,该模块像这样传递给服务的构造函数:
function UserService(UserInfoData, localStorageService, UserApplications){
this.UserInfoData = UserInfoData;
this.localStorageService = localStorageService;
this.userApplications = UserApplications;
}
当我给 $resource.query() 函数一个回调函数并用 $.proxy 包装它时,我不断得到 this.localstorag 是未定义的,当我调试它时,这是对窗口的引用。所以不完全是我预期的行为。
有没有其他方法可以将“this”或对对象的引用传递给回调函数?
我已经尝试过创建一个引用 this 的变量,但它也没有成功:/
UserService.prototype.getUserApplications = function(){
var locale = this.getUserinfoLocale();
var applications = this.localStorageService.get(Constants.key_applications+locale);
if(applications !== null){
return JSON.parse(applications);
} else {
return this.userApplications.query({locale: locale}, $.proxy(function(data, locale){
this.localStorageService.add(Constants.key_applications+locale, JSON.stringify(data));
}), this);
}
};