关于A): 我假设你指的是你的应用程序的以下路线。这个模型函数返回一个数组。因此Ember知道它应该使用ArrayController来渲染你的UsersRoute。
App.UsersIndexRoute = Ember.Route.extend({
model: function() {
return App.User.find();
}
});
关于B):我已经更新了你的代码 - >http://jsbin.com/ozilam/15/edit
我需要更新一些你们的名字(控制器和视图)的匹配naming conventions of 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
}
});
注:当我写这个我意识到如果你在控制器而不是视图中处理这个事件,它可能会更好,因为它的数据修改任务。