【问题标题】:Ember fixtures on model are not loaded at start模型上的 Ember 固定装置在开始时未加载
【发布时间】:2013-05-01 01:03:03
【问题描述】:

我有一个关于从特定模型加载 Ember 数据的问题。首先我必须指出我正在使用 require.js 来加载所有依赖项。我加载所有控制器、视图、路由,然后将它们添加到我的全局 Ember 应用程序中。此外,我有一个简单的模型,其中包含几个字段作为固定装置。

所以,像App.MyModel.find().toArray().length 这样的第一次回复我 0。但是当应用程序启动时,如果我尝试运行这句话,我会得到正确的值。

我试图找出所有执行的事件或方法(在控制器或路由中),但我没有得到它。我试图将controller.content 设置为App.ready,但没有成功

谁能帮帮我?

【问题讨论】:

  • 我相信 length 是 0,因为 find 返回一个承诺,并且您正在尝试访问尚未实现的对象的属性。您应该在Route#model 中调用find,并在Route#setupController 中设置控制器内容
  • @MilkyWayJoe 您的评论不仅仅是一个可以接受的答案,您应该将其发布为答案:)
  • 是的@MilkyWayJoe 这正是我一直在做的,但没有成功
  • 你可以在这里创建一个小提琴或添加你的代码吗?
  • 感谢@MilkyWayJoe 谷歌搜索后终于找到了解决方案

标签: ember.js ember-data fixtures


【解决方案1】:

我的解决方案是“修复集”:

  1. 我不得不拆分 Ember 应用程序对象,以便首先设置 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
        });

    }
);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-10-07
    • 1970-01-01
    相关资源
    最近更新 更多