我看到有关此事的相互矛盾的信息。但这就是我目前正在做的事情。在我的模板中,我有一个包含以下操作助手的表单:
<button {{action "save" song}}>Save</button>
在我的控制器中,我有以下内容:
App.SongsNewController = Ember.ObjectController.extend({
title: '',
actions: {
save: function() {
console.log(this.get('title'));
}
}
});
我还定义了一个Song模型,理想情况下,我希望从表单提交的值绑定到该模型,然后只能在我的控制器中引用Song模型,而不是从控制器并手动填充我的模型。类似的东西:
App.SongsNewController = Ember.ObjectController.extend({
actions: {
save: function(song) {
song.save();
}
}
});
我很确定这是可能的(我希望无论如何),我只是在任何地方找不到文档或者错过了它们。
答案 0 :(得分:0)
由于你有阵列控制器,我会假设你会像这样迭代你的歌曲:
//songsNew.hbs
{{#each}}
{{input type="text" value=name}}
<button {{action "save" this}}>Save</button>
{{/each}}
然后你可以拥有&#34;保存&#34;你在帖子中提到的歌曲模型作为参数传递的动作。 但是如果你定义了itemController,那么动作将转到itemController本身,而不是arrayController。如果您希望阵列控制器处理保存,则可能必须将目标设置为操作,如下所示:
<button {{action "save" this target=parentController}}>Save</button>
编辑:
在SongNewRoute中,将模型定义为:
model: function(){ return this.get('store').createRecord('song');}
这为您提供了新的空歌曲模型,您可以将表单绑定到此模型,当您进行保存操作时,数据将保留在db中。