我的商店在哪里?

时间:2014-02-12 08:28:02

标签: ember.js ember-data

我正在从ember-data 0.0.14迁移到ember-data 1.0.0-beta.6。我一直关注the guide

我正在预加载应用程序所需的一些数据,在应用程序准备就绪时触发此预加载。但我失去了商店!

/// application.js

var App = Ember.Application.createWithMixins({

    ...

    ready: function () {
        this.preLoadData();
    },

    ...
});

/// load_data.js

function preLoadData() {
    var store = this.Store;
    if (DEBUG) { console.log('preLoadData > this=%o store=%o', this, store); }
    store.find('node');  // was this.Node.find();
}
App.preLoadData = preLoadData;

但是this.Store不是商店(我不知道那是什么!)。也尝试使用this.store,但它未定义,所以我得到:

Uncaught TypeError: Cannot call method 'find' of undefined

我甚至尝试过:

// inject the store into all components
SettingsApp.inject('component', 'store', 'store:main');

无论魔法是什么意思(什么是'component'?它是组件'component',还是任何组件?什么是组件?),但没有帮助。

如何直接从我的App

访问商店实例

编辑:我在文档中找到component,但这不是我需要的:我想从App访问商店。

1 个答案:

答案 0 :(得分:1)

您正尝试从Application对象访问存储,这是不可能的。你可以使用这样的东西,

var store = App.__container__.lookup('store:main')

初始化您的应用

但我相信您想要使用一些预加载的数据来初始化您的应用。您可以使用初始化程序来完成此类工作。

Ember.Application.initializer({
  name: "preload data",

  initialize: function(container, application) {
    var store = container.lookup('store:main');
    store.find('node');
  }
});