在ember.js中引导数据

spu*_*len 6 ember.js ember-data

什么是在页面加载时为emberjs应用程序引导数据的最佳方法.我知道它很可能从数据属性或隐藏div中的数据中获取数据,但是在emberjs应用程序生命周期中这将会是什么?

Rob*_*son 3

您可能正在加载几种不同类型的数据。我一直在使用ember-data模型DS.FixtureAdapter(对于静态数据)或DS.RESTAdapter(对于动态数据。

这是一个使用固定装置的小例子:

App.Store = DS.Store.extend({
  revision: 11,
  adapter: 'DS.FixtureAdapter'
});

App.Page = DS.Model.extend({
  title: DS.attr('string')
});

App.Page.FIXTURES = [{
    id: 1,
    title: "Test Title #1"
  }, {
    id: 2,
    title: "Random Title #2"
  }];
Run Code Online (Sandbox Code Playgroud)

在我的(小型)应用程序中,我只是在定义商店和模型后直接加载夹具数据。这对于简单的一对一关联非常有效(想想类型或类别的静态列表)。当使用非夹具类型数据时,它只是指定为model路线上的属性,并在需要时加载。

更新

要在页面加载时预加载初始数据(例如初始页面状态,如登录),您可以使用DS.Store#load

Store = DS.Store.create({
  revision: 11
});

Page = DS.Model.extend({
  title: DS.attr('string')
});

Store.load(Page, {id: 1, title: 'Wow Cool Title'});

Store.find(Page, 1).get('title') //=> 'Wow Cool Title'
Run Code Online (Sandbox Code Playgroud)

  • 是的,您可以使用“DS.Store.loadMany”一次加载多条记录(请参阅[此处]的定义(https://github.com/emberjs/data/blob/master/packages/ember-data/ lib/system/store.js#L1616)和一些测试[此处](https://github.com/emberjs/data/blob/master/packages/ember-data/tests/unit/store_test.js#L211) 。 (2认同)