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
hook
beforeModel
是初始化该属性的有用位置


然而,您对这个概念的实现是有缺陷的,并且您在
afterModel
hook中复制了太多的余烬数据逻辑。取而代之的是,在不必要的时候,只需考虑使用<代码>卸载/代码>从本地存储中移除模型实例,下次在执行<代码>查找“< /代码>”时,强制刷新,或者在适当的位置执行<代码>重载< /代码>以强制重新加载。< /P>我不知道卸载方法。我的计划是初始化beforeModel中讨论的属性,并用简单的model.reload()替换$.getJSON调用。在最初的测试中,它似乎工作得很好。这看起来对吗?