我正在使用 DS.JSONAPIAdapter
使用 queryRecord 获取数据时,我无法更新模板,但数据已正确加载。
export default Ember.Route.extend({
model: function(params) {
return this.store.queryRecord('question', {
id: params.id,
//include: 'question.something,question.otherthing'
});
}
});
使用 findRecord 获取数据时,模板会更新。
export default Ember.Route.extend({
model: function(params) {
return this.store.findRecord('question', params.id);
}
});
如果我这样做:
export default Ember.Route.extend({
model: function(params) {
if (this.store.hasRecordForId('question', params.id)) {
return this.store.peekRecord('question', params.id);
}
return this.store.queryRecord('question', {
id: params.id
// include: ''
}).then(function(result){ return result; });
}
});
我第一次去路线时,会加载数据,但模板不会更新。第二次使用 peekRecord()并更新模板。
如何在使用queryRecord时更新模板? 感谢。
答案 0 :(得分:0)
好的,我找到了解决方案。
我的后端使用json-api规范。
当我使用上面的queryRecord()时,请求命中:
,数据响应是一个集合:
{
"data": [
{
}
]
}
我需要点击
此时此刻很痛苦,黑客就是:
export default DS.JSONAPIAdapter.extend(DataAdapterMixin, {
urlForFindRecord(id, modelName, snapshot) {
let url = this._super(...arguments);
let query = Ember.get(snapshot, 'adapterOptions.query');
if (query) {
url += '/?' + Ember.$.param(query); // assumes no query params are present already
}
return url;
},
});
export default Ember.Route.extend({
model: function(params) {
return this.store.findRecord('question', params.id, {
adapterOptions: {
query: {
include: 'answers',
limit: 1
}
}
});
}
});