2012-08-10 87 views

回答

22

使用DS.FixtureAdapter(或DS.FixtureAdapter.create())如果您还没有(但?)谨慎地与后端进行通信,但会将数据作为“固件”存储在客户端中。一旦你已经声明了一个模型:

App.Thing = DS.Model.extend({ 
    name: DS.attr('string'), 
    // ... 
}); 

您可以定义夹具:

App.Thing.FIXTURES = [ 
    { 
    id: 1, 
    name: '...', 
    // ... 
    }, 
    { 
    id: 2, 
    name: '...', 
    // ... 
    }, 
]; 

然后你就可以使用他们的余烬数据的方法(例如App.Thing.findAll()等),并对其进行操作,但当然,它只会持续页面(即javascript环境)。

DS.RestAdapter虽然显然还在开发中,但它的设计非常适合Rails API,但可能会被修改/扩展以适用于您正在使用的任何RESTful API。它知道通过致电/things来处理App.Thing.findAll(),并且通过致电/things/12来处理App.Thing.find(12)。这是一个相对路径,追加到命名空间参数,您在传递:

App.store = DS.Store.create({ 
    revision: 4, 
    adapter: DS.RestAdapter.create({ 
    namespace: 'http://what.ever/api/v1' 
    }) 
}); 

DS.Adapter是相当抽象:上述内置适配器的超类。如果两者都不符合您的需求,您可能需要自行实施:

App.adapter = DS.Adapter.create({ 
    find: function(store, type, id) { 
    // ... 
    jQuery.get(... , function(data) { 
     store.load(type, id, data); 
    }); 
    }, 
    createRecord: function(store, type, model) { 
    // ... 
    jQuery.post(... , function(data) { 
     store.didCreateRecord(model, data); 
    }); 
    }, 
    // ... 
}); 
App.store = DS.Store.create({ 
    revision: 4, 
    adapter: App.adapter 
}); 

希望有所帮助。有关更多信息,请参阅自述文件https://github.com/emberjs/data

+0

非常棒的回复,感谢分享。 – 2014-01-09 16:49:25

相关问题