2013-03-13 72 views
0

我试图创建一个基本的CRUD设置来管理Ember中的用户对象。我想我有我的模型和路线。我在努力管理:添加一个新的对象到ArrayController

A)(所有)用户页面的正确控制器设置。我认为我应该创建一个ArrayController,但它似乎自动正常工作。我的Ember应用程序是否知道创建一个单独的“用户”对象?如果是这样,怎么样? B)从InputFields传递数据。如果您在我的example中点击“添加用户”,我已经创建了一个表单来创建用户。当你点击“创建”时,我不确定如何获取textField值,也不知道如何获取textField值,只要我拥有这些值,我也不知道该如何处理这些值。我将如何更新我的控制器?

再次,这里是我的代码jsbin。任何指导将不胜感激。

回答

2

关于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 

    } 
}); 

注:当我写这个我意识到如果你在控制器而不是视图中处理这个事件,它可能会更好,因为它的数据修改任务。

相关问题