我有一条路线应该加载一个模型(BatchDetail)和一些相关的项目(BatchItems)。由于有很多项目,我应该可以使用两个请求参数limit
和offset
进行分页。
以下是我设置的路线:
App.BatchDetailRoute = Ember.Route.extend({
model: function(params) {
var store = this.get('store');
var adapter = store.get('adapter');
var id = params.batch_detail_id;
var rejectionHandler = function(reason) {
Ember.Logger.error(reason, reason.message);
throw reason
}
return adapter.ajax("/batch_details/" + id, "GET", {
data: { limit: 50, offset: 100 }
}).then(function(json) {
adapter.didFindRecord(store, App.BatchDetail, json, id);
}).then(null, rejectionHandler);
},
setupController: function(controller, model) {
return this.controllerFor('batchItems').set('model', model.get('items'));
}
})
这样,当我转到/batch_details/1
时,我的REST适配器将获取上面代码中json
中收到的正确数据。
现在,模型钩子应该返回一个模型对象或一个可以解析为模型对象的promise,这就是问题所在。在setupController
(在model
挂钩之后运行)模型设置为undefined
,因此我的代码会爆炸。
这意味着无论adapter.ajax
返回什么都没有正确解析,而是返回undefined
。我很困惑,因为上面的机制正是ember-data(find
,findById
等)中不同findByQuery
方法的工作原理,而这正是我从中得到我的想法的地方。
你能说清楚我没有得到什么吗?
谢谢。