Ember.js 每次输入余烬路由时发出服务器请求
当使用动态路径输入余烬路由时,余烬数据将加载存储中预加载的对象(如果存在),而不会发出服务器请求。例如:Ember.js 每次输入余烬路由时发出服务器请求,ember.js,ember-data,Ember.js,Ember Data,当使用动态路径输入余烬路由时,余烬数据将加载存储中预加载的对象(如果存在),而不会发出服务器请求。例如: App.SomethingRoute=Ember.route.extend({ model:function(params){ this.store.find("something",params.something_id) } }) 我的应用程序是这样的,我不想在服务器端执行依赖模型的更新(对于简单的关系,我会这样做,但还有其他一些我只想从服务器中提取更新的记录)。因此,
App.SomethingRoute=Ember.route.extend({
model:function(params){
this.store.find("something",params.something_id)
}
})
我的应用程序是这样的,我不想在服务器端执行依赖模型的更新(对于简单的关系,我会这样做,但还有其他一些我只想从服务器中提取更新的记录)。因此,我能够通过在afterModel钩子中合并服务器请求来解决问题:
App.SomethingRoute=Ember.route.extend({
model:function(params){
this.store.find("something",params.something_id)
},
afterModel:function(model){
$.getJSON("/somethings/"+model.id).then(function(data){
var serialized_something=route.store.serializerFor("something").normalize(TaxProgram.Something,data.something)
route.store.update("something",serialized_something)
})
})
我不明白的是如何检查模型钩子是否真的被调用了,在这种情况下,不要再进行一次浪费性的afterModel调用。我可以在包含这些信息的路由上设置一个属性,但我希望Ember有一个方法来实现这一点。有什么建议吗?没有,余烬中没有具体规定来处理您描述的情况 在类似的情况下,我完全按照您所说的那样做了,即设置一个属性来记住是否调用了
model
hookbeforeModel
是初始化该属性的有用位置
然而,您对这个概念的实现是有缺陷的,并且您在
afterModel
hook中复制了太多的余烬数据逻辑。取而代之的是,在不必要的时候,只需考虑使用<代码>卸载/代码>从本地存储中移除模型实例,下次在执行<代码>查找“< /代码>”时,强制刷新,或者在适当的位置执行<代码>重载< /代码>以强制重新加载。< /P>我不知道卸载方法。我的计划是初始化beforeModel中讨论的属性,并用简单的model.reload()替换$.getJSON调用。在最初的测试中,它似乎工作得很好。这看起来对吗?