2013-05-01 29 views
1

我有关于从特定模型加载Ember数据的问题。首先我必须指出,我正在使用require.js来加载所有的依赖关系。我加载所有控制器,视图,路线,然后,我将它们添加到我的全球Ember应用程序。此外,我有一个简单的模型,几个领域作为装置。模型上的Ember灯具在启动时未加载

因此,第一次如App.MyModel.find().toArray().length回应我0.但是,当应用程序已经开始,如果我尝试运行这个句子,我得到正确的价值。

我试图找出任何事件或方法(在控制器或路由),执行后,但我没有得到它。我试图设置controller.contentApp.ready没有成功的结果

任何人都可以帮助我吗?

+2

我相信'length'是0,因为'find'返回一个承诺,你试图访问该对象的属性,而它并没有被物化。您应该在['Route#model'](http://emberjs.com/guides/routing/specifying-a-routes-model/)中调用'find',并在['Route#setupController']中设置控制器内容(http://emberjs.com/guides/routing/setting-up-a-controller/) – MilkyWayJoe 2013-05-01 02:16:14

+0

@MilkyWayJoe你的评论不仅仅是一个可以接受的答案,你应该把它作为答案:) – intuitivepixel 2013-05-01 09:49:57

+1

是@MilkyWayJoe它确切地说我一直在做但没有成功 – 2013-05-01 10:43:33

回答

1

在我的情况的解决方案是一个“补丁集”:

  1. 我不得不以第一套DS.Store实例分裂灰烬应用程序对象,并添加到它的“模式”
  2. 在该对象我加入所有的控制器,视图,路由器的第二部分,等等
  3. 最后,当我扩展DS.Store对象我不得不设置属性simulateRemoteResponse: true

最终app.js代码为以下几点:

define(
    [ #dependencies ], 

    function(#dependencies_objects) { 

     window.App = Ember.Application.create({ 
      VERSION: '1.0.0', 
      LOG_TRANSITIONS: true, 

      rootElement: '#app', 

      // Store 
      store: DS.Store.create({ 
       revision: 12, 
       adapter : DS.FixtureAdapter.extend({ 
        simulateRemoteResponse: false 
       }) 
      }), 

      // Models 
      Item: Item // Where Item is my own model 
     }); 

     App.reopen({ 
      // Routes 
      IndexRoute: IndexRoute, 

      // Load routes 
      Router: Router, 

      // Controllers 
      ApplicationController: Ember.Controller.extend(), 
      IndexController: IndexController 
     }); 

    } 
);