控制器动作中的访问模型?

时间:2015-01-31 18:51:55

标签: ember.js handlebars.js ember-cli controller-actions

我正在使用表单编辑对象,并希望从绑定到提交按钮的控制器操作中保存更改的对象。我不想将值直接绑定到模板。

这里是admin/edit.hbs

<form>
    <label>Title
      <input name="title" type="text" {{ bind-attr value=title }} />
    </label>
    <label>Permalink
      <input name="permalink" type="text" {{ bind-attr value=permalink }} />
    </label>
    <label>Post
      {{textarea value=body cols="80" rows="12"}}
    </label>
  <button {{ action 'submitAction' }}>Submit</button>
</form>

这是控制器admin/edit.hbs 从&#39; ember&#39;;

导入Ember
export default Ember.ObjectController.extend({    
  actions: {
      submitAction: function() {
        var newTitle = this.get('title');
        // how to access the model here?
      }
    }
});

2 个答案:

答案 0 :(得分:1)

假设您想要的模型目前是ObjectController的模型,您可以执行以下两项操作之一:

  1. 直接获取模型:

    submitAction: function() {
        var model = this.get('model');
    }
    
  2. 将其传递给模板中的处理程序:

    // admin/edit.hbs
    <button {{action 'submitAction' model}}>Submit</button>
    
    // admin/edit.js
    submitAction: function(model) {
    
    }
    

答案 1 :(得分:0)

ObjectController中,模型存储为... model。您可以像这样访问它:

var model = this.get('model');
model.set('title', newTitle);

如果您没有使用自动绑定ObjectControllerget对象的set功能,则可能不应使用ObjectController。列出的代码将直接从输入字段设置模型的title