关于A):
我假设您指的是您的应用程序的以下路线。此模型函数返回一个数组。因此 Ember 知道它应该使用 ArrayController 来呈现您的 UsersRoute。
App.UsersIndexRoute = Ember.Route.extend({
model: function() {
return App.User.find();
}
});
关于B):我已经更新了你的代码-> http://jsbin.com/ozilam/15/edit
我需要更新您的一些名称(控制器和视图)以匹配Ember 的命名约定。
使用 Ember,您不必使用表单并手动读取这些值。相反,当您输入您的路线时,您会创建一个新记录:
App.UsersNewRoute = Ember.Route.extend({
setupController : function(controller){
controller.set("content", App.User.createRecord({}));
}
});
在您的视图中,您将绑定记录的属性。如您所见,我还使用操作助手更新了您的按钮。
<script type="text/x-handlebars" data-template-name="users/new">
<div class="row">
<div class="six columns">
<h3>New User Information</h3>
<form>
<label>First Name</label>
{{view Ember.TextField valueBinding='name_first'}}<br />
<label>Last Name</label>
{{view Ember.TextField valueBinding='name_last'}}<br />
<label>Email Address</label>
{{view Ember.TextField valueBinding='email_address'}}<br />
<label>SSN</label>
{{view Ember.TextField valueBinding='ssn'}}<br />
<button {{action create target="view"}} class="button">Create</button>
{{#linkTo users}}Cancel{{/linkTo}}
</form>
</div>
</div>
</script>
随着表单中的这些更改自动传播到您的控制器,您只需访问控制器中的对象:
App.UsersNewView = Ember.View.extend({
didInsertElement: function() {
this.$('input:first').focus();
},
create: function(){
console.log('view submitted');
var newUser = this.get("controller.content");
console.log(newUser.get("name_first"));
console.log(newUser.get("name_last"));
// HOW DO I PROCESS THIS FORM
}
});
注意:当我写这篇文章时,我意识到如果你在控制器而不是视图中处理这个事件可能会更好,因为它是一个数据修改任务。