我已经设置了以下模型:
App.Store = DS.Store.extend({adapter: DS.FixtureAdapter});
App.store = App.Store.create();
App.Proposal = DS.Model.extend({
title: DS.attr('string'),
description: DS.attr('description')
});
App.Proposal.FIXTURES = [...];
这很好用,我的应用程序会提取我的夹具数据并将其全部设置好。我可以毫无问题地移动我的应用程序。
由于显示数据有效,我创建了一条路线来创建新的提案。我无法弄清楚如何将它保存回我的数据存储,我认为我正在做的一切正确。这就是我正在做的事情:
App.ProposalsNewController = Ember.ObjectController.extend({
newRecord: function() {
this.set('content', App.Proposal.createRecord());
},
actions: {
saveNewProposal: function() {
var newProposal = App.Proposal.createRecord({...});
newProposal.save();
this.transitionToRoute('proposals.index');
}
}
});
App.ProposalsNewRoute = Ember.Route.extend({
setupController: function(controller) {
controller.newRecord();
}
}
调用newProposal.save()
时,数据存储区中不会显示任何内容。我的另一个问题是,大多数文档都说在创建记录时我应该使用this.store
而不是App.Proposal
,但这会产生以下错误:
TypeError: Object proposal has no method '_create'
创建和保存记录的正确方法是什么?或者只是因为我正在使用FixtureAdapter?
答案 0 :(得分:0)
您确实使用了相当旧的Ember Data版本。
以下是Ember的一个简单示例,其中包含1.0 beta版本的ED。
http://emberjs.jsbin.com/OxIDiVU/73/edit
以下是您需要更改的一些基本概念:
App.ApplicationAdapter = DS.RESTAdapter;
App.ColorAdapter = DS.FixtureAdapter;
this.get('store').createRecord('color', {name: 'green'});
this.get('store').find('color'); //find all of the colors
this.get('store').find('color', 1); //find color id 1
您需要浏览一下Ember数据转换,它将在实际转到ED 1.0后立即发布。这就是文档过时的原因。