Ember.js 如何测试rootState.loading?

Ember.js 如何测试rootState.loading?,ember.js,Ember.js,我最初加载一些对象的部分信息(称为脚本),然后在需要时检索完整记录。为此,我使用 App.ScriptRoute = Ember.Route.extend({ model: function(params) { return {id: params.script_id}; }, setupController: function(controller, model) { var record = App.Script.find(model.id)

我最初加载一些对象的部分信息(称为脚本),然后在需要时检索完整记录。为此,我使用

App.ScriptRoute = Ember.Route.extend({
    model: function(params) {
       return {id: params.script_id};
    },
    setupController: function(controller, model) {
      var record = App.Script.find(model.id);
      record.reload();
      controller.set("model", record);
    },
);
这对于上面提到的情况非常有用:脚本对象是预加载的,我正在重新加载一个包含全部细节的脚本。但是,如果我刷新页面或通过url直接访问页面,我们没有预加载的对象集,并且脚本对象是第一次加载的,我会遇到以下错误:

Error while loading route:
Error: Attempted to handle event `reloadRecord` on App.Script:ember281:StudioMRConverter> while in state rootState.loading. 

在调用
record.reload()
之前,如何修改setupController以测试
rootState.loading

我想在重新加载记录之前,您可能会先听到
didLoad
事件

例如:

App.ScriptRoute = Ember.Route.extend({
  model: function(params) {
   return {id: params.script_id};
  },
  setupController: function(controller, model) {
    var record = App.Script.find(model.id);
    record.on('didLoad', function() {
      record.reload();
    });
    controller.set("model", record);
  },
);

嗯,这修复了刷新时的重新加载,但我在所有其他情况下都会丢失重新加载。只对模型进行部分加载是否有违余烬哲学?或者,在调用App.Script.find(model.id)之前,是否有某种方法可以完全删除或使部分加载的模型无效?或者,我应该定义两个不同的模型,例如App.PartialScript和App.Script,以便在与完全加载的记录不同的命名空间中维护部分加载的记录?但这似乎不正确……我不确定,你能发布一下你的模特现在的样子吗?我刚刚更新了小提琴。我添加了一个名为App.Partialscript的新模型,它是App.Script的缩小版本;这样,完全加载的脚本对象不会与预加载的部分脚本冲突。此设置工作:(a)概览路由“/scripts”加载一个“partialscripts”数组,该数组具有与“普通”脚本对象相同的id,partialscripts链接到“/scripts/SCRIPTID”。(b) 单击链接可查询通过App.script提供的完全加载的脚本对象。(c) App.Script也支持刷新和访问“/#/scripts/SCRIPTID”。@philstra,如果您的模型允许您将其拆分,那么它看起来是一个可行的解决方案