關於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
}
});
注:當我寫這個我意識到如果你在控制器而不是視圖中處理這個事件,它可能會更好,因爲它的數據修改任務。