Ember.js 带有承诺数据的Ember服务属性
我有一个服务来获取当前用户,当我返回一个硬编码的对象时,它会正确返回,但是我不能让它从ajax调用返回数据Ember.js 带有承诺数据的Ember服务属性,ember.js,Ember.js,我有一个服务来获取当前用户,当我返回一个硬编码的对象时,它会正确返回,但是我不能让它从ajax调用返回数据 export default Ember.Service.extend({ currentUser: Ember.computed(function() { Ember.$.ajax({ url: "http://localhost:8000/v1/me/" }).then(function(data){ console.log(data);
export default Ember.Service.extend({
currentUser: Ember.computed(function() {
Ember.$.ajax({
url: "http://localhost:8000/v1/me/"
}).then(function(data){
console.log(data);
return data;
},
function(err){
console.log(err);
});
}),
});
根据承诺中的console.log
,我知道数据返回正确
当我在控制器中使用此服务时,它不会为currentUser返回任何内容,但是我知道所有内容都已正确连接,因为如果我将一个Ember.Object替换为ajax查询,它会将该对象返回给控制器
我是否需要对包含ajax查询的属性做一些特殊的处理,以便能够在控制器中使用返回的数据?我认为它不会以您希望的方式工作。至少我从未读到过你可以将承诺作为计算财产返还。您可以做的是在客户端授权时从服务器获取当前用户,并将其保存在本地存储中。在计算属性中,从本地存储读取数据并返回
你可能会发现一个有趣的讨论,它在同样的情况下帮助了我。如果您使用ember simple auth,您甚至会发现有一段现成的代码。
ember.$。ajax
返回一个“ajax承诺”,而不是承诺/a+承诺,因此您会遇到问题。您实际上也没有返回Ember.$.ajax
调用,因此方法的返回值未定义。此外,您可能需要将调用包装在ObjectProxy中。但是当ember simple auth发行版1.0时,ember simple auth
的创建者在http://log.simplabs.com/post/131698328145/updating-to-ember-simple-auth-10
,他遵守承诺,而不是为get currentUser提供本地存储