Ember数据夹具适配器

时间:2012-09-12 11:16:55

标签: ember.js ember-data

夹具适配器是否有提交方法?它有什么作用? 据我所知,store.commit()在与REST适配器一起使用时会调用API。

我可以将isLoaded属性与fixture适配器一起使用吗?

基本上我的控制器中有2条记录,名为xy,属性内容有许多y类型的记录。 下面的咖啡代码:

someMethod: (->
  content.removeObject(y)
).('x.isLoaded')

anotherMethod: ->
  //modify x
  Application.store.commit()

当我调用anotherMethod时,它会更新x并在商店上运行提交,因此会调用someMethod。 我的实际应用程序运行正常但是在测试的情况下someMethod从内容和商店中删除记录y。 是isLoadedcommit不适用于夹具数据存储吗?

1 个答案:

答案 0 :(得分:8)

是的,有一种提交方法,可以通过DS.Store或DS.Transaction访问。

这是一个fiddle,它有一些很好的代码,可以用夹具快速演示CRUD。

window.App = Ember.Application.create();

App.store = DS.Store.create({
    revision: 4,
    adapter: 'DS.fixtureAdapter'
});

App.Person = DS.Model.extend({
    id: DS.attr('number'),
    name: DS.attr('string')
})

App.Person.FIXTURES = [
    {id: 1, name: 'Fixture object 1'},
    {id: 2, name: 'Fixture object 2'}
];

App.people = App.store.findAll(App.Person);
App.store.createRecord(App.Person, {id: 1, name: 'Created person'});

App.personView = Em.View.extend({
    isVisibleBinding: 'notDeleted',
    notDeleted: function() {
        return !this.getPath('person.isDeleted');
    }.property('person.isDeleted').cacheable(),

    remove: function () {
      this.get('person').deleteRecord();
    }
});