Ajax 承诺 属性 不返回数据
Ajax Promise on Property not returning data
我有一个 Ember 控制器,带有一个简单的 属性,它应该从服务器获取文件列表。服务器端一切正常,数据正在 returning 并显示在控制台上。
在控制器中我有:
imgFiles: new Ember.RSVP.Promise(function(resolve, reject) {
Ember.$.ajax(ENV.apiHost+'/'+ENV.apiNamespace +'/folderwalk/newsimg', {
success: function(response) {
// console.log(response);
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
}),
在模板中:
{{imgFiles}} // shows [object Object]
{{#each imgFiles as |file|}} // doesn't loop at all
x {{file}}
{{/each}}
我已经尝试了所有我能想到的变体。封装在函数和 return Promise 中,return 成功响应,...
我仍然无法得到 return 实际数据的承诺。
是的,当您记录响应时,您将获得整个负载。但是,Ember 不知道从服务器返回的新数据(以前是 Promise
)。您必须使用 set
.
明确通知 Ember 有关新数据的信息
imgList: Ember.computed({
get() {
return new Ember.RSVP.Promise((resolve, reject) => {
$.ajax('https://jsonplaceholder.typicode.com/photos').then((data, textStatus, jqXHR) => {
console.log(data);
let firstHunPhotos = data.slice(0,100);
this.set('imgList', firstHunPhotos); // <- set the new data | set the entire data if you want!
});
});
},
set(key, value) {
return value // <- don't forget the setter!
}
})
通常这些来自模型。渲染将被延迟,直到模型被解析。
您的案例可以以稍微不同的方式实施。获取有关 mount/init 事件的详细信息并将已解析的值设置为 属性 并将该 属性 与视图绑定。值更新后将重新呈现视图
我有一个 Ember 控制器,带有一个简单的 属性,它应该从服务器获取文件列表。服务器端一切正常,数据正在 returning 并显示在控制台上。
在控制器中我有:
imgFiles: new Ember.RSVP.Promise(function(resolve, reject) {
Ember.$.ajax(ENV.apiHost+'/'+ENV.apiNamespace +'/folderwalk/newsimg', {
success: function(response) {
// console.log(response);
resolve(response);
},
error: function(reason) {
reject(reason);
}
});
}),
在模板中:
{{imgFiles}} // shows [object Object]
{{#each imgFiles as |file|}} // doesn't loop at all
x {{file}}
{{/each}}
我已经尝试了所有我能想到的变体。封装在函数和 return Promise 中,return 成功响应,...
我仍然无法得到 return 实际数据的承诺。
是的,当您记录响应时,您将获得整个负载。但是,Ember 不知道从服务器返回的新数据(以前是 Promise
)。您必须使用 set
.
imgList: Ember.computed({
get() {
return new Ember.RSVP.Promise((resolve, reject) => {
$.ajax('https://jsonplaceholder.typicode.com/photos').then((data, textStatus, jqXHR) => {
console.log(data);
let firstHunPhotos = data.slice(0,100);
this.set('imgList', firstHunPhotos); // <- set the new data | set the entire data if you want!
});
});
},
set(key, value) {
return value // <- don't forget the setter!
}
})
通常这些来自模型。渲染将被延迟,直到模型被解析。
您的案例可以以稍微不同的方式实施。获取有关 mount/init 事件的详细信息并将已解析的值设置为 属性 并将该 属性 与视图绑定。值更新后将重新呈现视图