Ember.js 使用1.0.0-beta.10多次调用请求
当将EmberData从1.0.0-beta.9升级到1.0.0-beta.10时,我注意到在页面的不同位置使用计算属性时,会多次发出相同的选项/GET请求 示例代码Ember.js 使用1.0.0-beta.10多次调用请求,ember.js,ember-data,Ember.js,Ember Data,当将EmberData从1.0.0-beta.9升级到1.0.0-beta.10时,我注意到在页面的不同位置使用计算属性时,会多次发出相同的选项/GET请求 示例代码 然后在我的请求中,我看到了对我的events API的3个选项调用。这在beta.9中没有发生,所以我很好奇可能发生了什么?在回答您的问题之前,我必须说您问题中的代码是错误的。请检查并修改您的代码,以便更多的人能够理解它 例如,在您的代码中: /* It should be App.Customer right? */ App.
然后在我的请求中,我看到了对我的events API的3个选项调用。这在beta.9中没有发生,所以我很好奇可能发生了什么?在回答您的问题之前,我必须说您问题中的代码是错误的。请检查并修改您的代码,以便更多的人能够理解它 例如,在您的代码中:
/* It should be App.Customer right? */
App.CustomerModel = DS.Model.extend({});
/* should be App.CustomerIndexRoute ? */
App.CustomerIndexController = Ember.Route.extend({
model: function(params) {
/* it returns a promise which resolves a customer array */
return this.store.find('customer');
}
});
App.CustomerIndexController = Ember.Controller.extend({
/*
* But for a customer array you can not get events property.
* you can only get events from a single customer.
*/
filteredEvents: function() {
return this.get('events').slice(0, 10);
}.property('events')
});
对于事件的多个GET请求
无论您如何构造路由和控制器代码,当您为客户迭代事件时,Ember Data都会为每个未获取的事件发送请求/events/:id
。您可以在适配器中设置coalesceFindRequests:true
,以便在一个请求中加载事件,例如/events/ids[]=1&ids[]=2&ids[]=3
对于多个选项请求
请检查是否使用代理将ajax请求委托给远程服务器或模拟服务器。据我所知,当您的代理无法正确委托请求时,将出现选项请求。在这种情况下,您可能会同时看到一个选项请求和一个GET请求。这不是灰烬数据问题。看起来这是合法的,但在beta.10中
您的路线是什么样的?您是否正在使用
this.store.find('someModel')
?是的。我正在做这个.store.find('customer')
这就是为什么。。。我认为find
总是发送请求。尝试仅在父级(资源路由)中使用find
,而在索引路由(或实际显示数据的任何路由)中使用all
。嗯,我不确定是否遵循。我收到的多个请求不是来自/customers API,而是来自/events API。所以最后我得到了一个客户,但我得到了3个对我的events API的请求-这将是6,因为3个选项/3得到:(很抱歉!我已经将代码替换为jsbin。就是这样。删除了我的答案,因为我可能误解了这个答案的问题+1