2013-12-12 6 views
1

Возможно ли получить доступ к коллекции itemControllers из родительского контроллера? У меня есть следующий код:Доступ к itemControllers от родительского контроллера

App.ShoppinglistController = Ember.Controller.extend(
    cartContent: null 

    actions: 
    removeSelected: -> 
     # How to I get each of the cart contents with it's ShoppinglistItemController? 
     # I want to filter them by the 'isSelected' property 
) 

App.ShoppinglistItemController = Ember.ObjectController.extend(
    isSelected: null 
) 

App.ShoppinglistRoute = Ember.Route.extend(
    setupController: (controller) -> 
    # [...] 
    controller.set('cartContent', cartContent) 
) 

<script type="text/x-handlebars" data-template-name="shoppinglist"> 
    {{#each cartContent itemController="shoppinglistItem"}} 
    {{title}} 
    {{view Ember.Checkbox checked=isSelected}} 
    {{/each}} 
    <div {{action 'removeSelected'}}>Remove selected items</div> 
</script> 

ответ

1

Вместо использования itemController="shoppinglistItem" в помощнике каждый вид. Переместите это на App.ShoppinglistController. Пример:

App.ShoppinglistController = Ember.Controller.extend(

    itemController: "shoppinglistItem" 

    cartContent: null 

    actions: 
    removeSelected: -> 
     cartsToRemove = @.get('cartContent').filterBy('isSelected', true) 
     # ... remove the carts 
) 

App.ShoppinglistItemController = Ember.ObjectController.extend(
    isSelected: null 
) 

App.ShoppinglistRoute = Ember.Route.extend(
    setupController: (controller) -> 
    # [...] 
    controller.set('cartContent', cartContent) 
) 

<script type="text/x-handlebars" data-template-name="shoppinglist"> 
    {{#each cartContent}} 
    {{title}} 
    {{view Ember.Checkbox checked=isSelected}} 
    {{/each}} 
    <div {{action 'removeSelected'}}>Remove selected items</div> 
</script> 
Смежные вопросы