【发布时间】:2015-04-12 14:16:34
【问题描述】:
我正在尝试学习 Ember,并且已经开始在我的后端服务器上读取和写入新元素。我在尝试更新时不知何故卡住了。
这是我的控制器
App.TeamController = Ember.ObjectController.extend({
editMode : false,
actions : {
enterEdit : function() {
this.set('editMode', true);
},
saveEdit : function() {
this.set('editMode', false);
this.get('model').save();
}
}});
这是我的车把代码:
{{# each team in model itemController="team"}}
{{# if team.editMode}}
{{input type="text" id="newName" value=team.name class="form-control"}}
{{input type="text" id="newLevel" value=team.level class="form-control"}}
<button {{action "saveEdit"}}>Save</button>
{{else}}
<p>{{team.name}} : {{team.level}} <button {{action 'enterEdit'}}>edit</button></p>
{{/if}}
{{/each}}
这在控制台中给了我以下错误消息:
TypeError: this.get(...).save 不是函数。
我不知道出了什么问题。任何帮助表示赞赏。
编辑:
我的模特:
App.Team = DS.Model.extend({
name: DS.attr('string'),
level: DS.attr('string')
});
我的路线
App.TeamsRoute = Ember.Route.extend({
model : function() {
var team = $.get('/teams/');
team.then(function(data){
console.log(data);
});
return team;
}});
【问题讨论】:
-
在
this.get('model').save();上设置断点并运行this.get('model')会发生什么?是否返回模型? -
就像 Oren 建议您很可能没有模型一样,您的路线是什么样的?
-
如果我设置断点我确实得到一个对象,它具有模型的所有值,它是:Object { id: 2, name: Getter, level: Getter, 2 more...},但它仍然给我 .save() 不是一个函数。
-
我的路线看起来像: App.TeamsRoute = Ember.Route.extend({ model : function() { var team = $.get('/teams/'); team.then(function( data){ console.log(data); }); return team; } });
标签: ember.js ember-data