2013-12-12 67 views
1

是否可以从父控制器访问itemController的集合? 我有以下代码:从父控制器访问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>