EmberJS:将表格发布到控制器,数据绑定到模型

时间:2014-04-02 16:01:15

标签: ember.js

我看到有关此事的相互矛盾的信息。但这就是我目前正在做的事情。在我的模板中,我有一个包含以下操作助手的表单:

<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();
    }
  }
});

我很确定这是可能的(我希望无论如何),我只是在任何地方找不到文档或者错过了它们。

1 个答案:

答案 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中。