我的问题是把手没有为ajax请求完成。
我的控制台是这样的:
所以这是我的锻炼控制器代码的一部分
workouts: function() {
console.log("starting");
this.get('session').authorize('authorizer:custom', (headerName, headerValue) => {
var obj = {};
obj[headerName] = headerValue;
Ember.$.ajax({
type: "GET",
url: this.requestEndpoint,
headers: obj,
}).success(function(data) {
console.log("ajax: "+JSON.stringify(data));
return data;
}).error(function(error) {
return error;
});
});
}.property()
Handlebars Template就像这样:
{{log workouts}}
我该如何解决这个问题? 也许: 有没有办法将此代码转换为承诺?或者有一个"等待灰烬"选项?
答案 0 :(得分:0)
在处理异步调用并仍想使用计算属性时,您可以执行 promiseObject 或 promiseArray 。
workouts: function() {
var ajaxCall = ....
return DS.PromiseObject.create({
promise: ajaxCall.then(function() {
// Do customStuff
});
});
}.property('blah')
Handlebars Template看起来像这样:
{{workouts.content}}
但是,当您的属性依赖于另一个属性 .property('someId')
时,我才会看到使用此方法的重点。在这种情况下,您将无法对服务器进行查询没有给定的ID。因此,当这个ID出现时,它会触发锻炼钩子,并为您提供必要的queryParams ..