我正在提交表单以在Ember.js中创建新的Review
。表单链接到我的reviews/new
控制器上的操作。
这是我的表格:
模板/评论/ new.hbs
<form {{action "createReview" on="submit"}}>
{{input value=name}}
{{input value=content}}
<input type="submit" value="Post this review" class="button">
</form>
我的控制器:
控制器/评论/新/ JS
import Ember from 'ember';
export default Ember.Controller.extend({
actions: {
createReview: function(params) {
console.log(this.get('name'));
console.log(this.get('content');
}
}
});
目前我的麻烦是以有效的方式访问表单字段值。请注意,this.get('name')
会打印出name
输入字段的值,而this.get('content')
也会打印相同的值。
但是有一种很好的方法可以在哈希中获取所有表单字段值吗?类似于:this.get('allAttributes')
会输出:
{name: "John Doe", content: "Bla bla-bla bla blaaaaah"}
修改
content
是ember中的 保留字。不要为属性&#34;内容&#34;
答案 0 :(得分:0)
您的控制器上可能有一个用于表单的对象:
export default Ember.Controller.extend({
formFields: Ember.Object.create(),
actions: {
createReview: function(params) {
console.log(this.get('formFields.name'));
console.log(this.get('formFields.content');
}
}
});
您需要使用Ember对象,以便绑定起作用。
<form {{action "createReview" on="submit"}}>
{{input value=formFields.name}}
{{input value=formFields.content}}
<input type="submit" value="Post this review" class="button">
</form>
答案 1 :(得分:0)
评论模型是这方面的重要目标。
// reviews/new route
export default Ember.Route.extend({
model: function() {
return this.store.createRecord('review', {
//predefined properties here
});
},
actions: {
// bubbling thru controller
createReview: function() {
this.get('model').save().then(function(review) {
// action you needs if any
self.transitionTo('reviews');
}, function() {
// on errors
});
},
cancel: function() {
this.transitionTo('reviews');
}
},
deactivate: function() {
var model = this.modelFor( this.routeName );
if (model.get('isNew')) {
model.destroyRecord();
}
}
});
//template
<form {{action "createReview" on="submit"}}>
{{input value=model.name}}
//errors example it depends of your backend and adapter
{{#each model.errors.name as |error|}}
<div class="error">
{{error.message}}
</div>
{{/each}
{{input value=model.content}}
<input type="submit" value="Post this review" class="button">
<button {{action "cancel"}}>Cancel</button>
</form>