2013-10-15 7 views
6

Ich bin relativ neu zu ember.js. Ich habe zwei Modelle User und RoleWie konfiguriere ich mehrere Controller auf der gleichen Route in ember.js?

App.User = DS.Model.extend({ 
    name: DS.attr('string'), 
    roles: DS.hasMany('role') 
}); 

App.Role = DS.Model.extend({ 
    name: DS.attr('string') 
}); 

In meiner Anwendung muss ich zuweisen und/oder Entfernen von Rollen für einen Benutzer. Dafür muss ich Schleife und vergleichen zwei Controller - Rollen gegen alle verfügbaren Rollen

(von Benutzerrollen hat) bekomme ich die den Benutzern zugewiesenen Rollen durch diese in der user/edit template

Assigned Roles: {{#each role in roles}}*{{role.name}}{{/each}} 

tun Aber wie tun Ich habe einen anderen RolesController in derselben Route, der alle verfügbaren Rollen unabhängig vom Benutzer hat? Wenn ich einen SetupController in UserEditRoute mache, der einen Konflikt von Namen für RolesController erzeugt.

Mein Ziel ist es, alle Rollen mit Kontrollkästchen angezeigt zu haben. Die Rollen, die dem Benutzer bereits zugewiesen werden geprüft und die anderen werden

jsfiddle link

Antwort

15

Im User-Controller deaktiviert werden Sie die Bedürfnisse Eigenschaft kann glut sagen Rollen Controller zu verbinden.

Sie sollten auch das Modell für diesen Controller zuweisen, so dass Sie den setupController Haken des UsersEditRoute gesetzt und yo haben Ihre Rollen aufgeführt

App.UsersEditRoute = Ember.Route.extend({ 
    setupController: function(controller,model) { 
     controller.set('model', model);//UsersEditController 
     this.controllerFor('roles').set('model',this.store.find('role')); 
    } 
}); 

Controller

App.UsersEditController = Em.ObjectController.extend({ 
    needs: "roles", 
    rolesController: Ember.computed.alias("controllers.roles") 
}); 
App.RolesController = Em.ArrayController.extend({}); 

Und schließlich Vorlage

<script type="text/x-handlebars" data-template-name="users/edit"> 
    <h3>User Edit</h3> 
     <p>Name: {{name}}</p> 
     <p>Assigned Roles: {{#each userRole in roles}}&nbsp;*{{userRole.name}}{{/each}}</p> 
     <p>Available Roles:{{#each role in rolesController}}&nbsp;*{{role.name}}{{/each}}</p> 
    </script> 

jsfiddle http://jsfiddle.net/tXFkZ/3/

+0

Das ist perfekt. Danke vielmals! – kaushikb9

Verwandte Themen