2013-07-20 141 views
1

我正处于学习ember.js的初始阶段。我试图从一个应用程序,并在参照中存在的控制对象的另一个对象是卡..参考模板中的不同对象

{{#each employee in controller}} 
    <tr> 
    <td class="span2"><input type="checkbox" style="margin-left : 110px;"/></td> 
    <td class="span2">{{#linkTo 'employee' employee}}{{employee.empId}}{{/linkTo}}</td> 
    <td class="span2">{{employee.name}}</td> 
    <td class="span2">{{employee.age}}</td> 
    <td class="span2">{{employee.dob}}</td> 
    <td class="span2">{{employee.gender}}</td> 
    <td class="span2">{{employee.doj}}</td> 
    <td class="span2">{{#linkTo 'employee' employee}}{{employee.mgrId}}{{/linkTo}}</td> 
    <td class="span2">{{employee.package}}</td> 
    <td class="span2">{{employee.address}}</td> 
    <td class="span2">{{employee.phone}}</td> 
    <td> <button {{action "deleteEmployee" employee}}> Delete </button></td> 
    {{/each}} 

在这里,我试图使用id来获取管理员的细节..

代码对于指数路线是:

App.Router.map(function() { 
    this.resource('employee',{ 
     path: "/employee/:employee_id"}, 
     function() { 
      this.route('edit'); 
     } 
    ); 
    this.route('allEmployees'); 
    // put your routes here 
}); 

App.AllEmployeesRoute = Ember.Route.extend({ 
    model: function() { 
     //console.log(param.patient_id); 
     var employees = []; 
     for(var employee_id in App.Employees) 
     { 
      employees.push(App.Employees[employee_id]) 
     } 
     return employees; 

    } 
}); 


App.Employee = Ember.Object.extend({ 
     "empId":null, 
     "name":null, 
     "age":null, 
     "dob":null, 
     "gender":null, 
     "doj":null, 
     "mgrId":null, 
     "package":null, 
     "address":null, 
     "phone":null 
    }); 

// Code for event handling 
App.AllEmployeesController = Ember.ArrayController.extend({ 
     deleteEmployee:function(employee){ 
      var employees = this.get('model'); 
      for(var i=0; i<employees.length;i++) 
      { 
       if(employees[i].empId === employee.empId) 

       employees.removeAt(i); 

      } 

     console.log("deleting "+employee.empId); 
     } 
    } 
); 

所以这是如何做到这一点在烬?

编辑:

JSON记录结构:

App.Employees = { 
    "1" : App.Employee.create({ 
     "id" : "1", 
     "empId" : "emp1", 
     "name" : "Employee 1", 
     "age" : "23", 
     "dob" : "17/12/89", 
     "gender" : "male", 
     "doj" : "9/1/12", 
     "mgrId" : "emp6", 
     "package" : "300000", 
     "address" : "address 1", 
     "phone" : "9999999999" 
    }), 
    "2" : App.Employee.create({ 
     "id" : "2", 
     "empId" : "emp2", 
     "name" : "Employee 2", 
     "age" : "24", 
     "dob" : "18/1/90", 
     "gender" : "female", 
     "doj" : "20/2/13", 
     "mgrId" : "", 
     "package" : "350000", 
     "address" : "address 2", 
     "phone" : "9437543985" 

    }), 
    "3" : App.Employee.create({ 
     "id" : "3", 
     "empId" : "emp3", 
     "name" : "Employee 3", 
     "age" : "25", 
     "dob" : "19/2/91", 
     "gender" : "male", 
     "doj" : "12/12/11", 
     "mgrId" : "emp2", 
     "package" : "300000", 
     "address" : "address 3", 
     "phone" : "3454395943" 
    }), } 
+0

你可以将你的控制器发布到你想要建立引用的地方吗? – intuitivepixel

回答

1

您可以使用needs API从您的特定的控制器访问其他控制器。

needs: 'manager', 
managerBinding: 'controllers.manager' 

从那里,如果manager是你想要的对象,你可以在控制器通过this.get('manager')引用它和manager相应的模板英寸

+0

darshan谢谢你的回答。其实我已经把所有员工记录都作为一个字段以mgrId作为json对象。在用户界面上,我将它作为链接呈现..所以当用户点击mgrId时。他应该被引导到经理记录,这也是一个雇员..所以想要加载该特定记录的基础上的ID ..我在记录结构的问题.. –

+0

它看起来不像' manager'是'employee'的父路由。在这种情况下,你需要加载这条记录。一个好的地方就是路由的'setupController'。一般来说,加载/嵌入这些依赖记录是一个好主意,所以你不必在以后明确加载。 –