2014-10-10 82 views
0

我正在嘗試在表中實現多行選擇行。父控制器只是一個對象控制器。它有一個模型,並且視圖作爲單獨的行遍歷模型的記錄集。 我已經實現了模型中所有行的itemController。這樣可行。 但是對於'selectAll'功能,在父控制器中,我無法獲取所有項目(單獨)。你有什麼想法如何去abt它? 這裏是我的工作至今:Ember ObjectController和ItemController SelectAll功能

export 
default Ember.ObjectController.extend({ 
// parent Controller 
itemController: 'checkbox', 
selectAll: function(key, value) { 
    var items = this.get('model.items'); 
    if (arguments.length == 2) { 
     this.setEach('isSelected', value); //setEach is throwing an error sine it comes from ArrayController where as I am using ObjectController as the parent controller type 
     return value; 
    } else { 
     return this.isEvery('isSelected', true); //isEvery is also throwing error for the same reason 

}.property('[email protected]') 

我的項目控制器(checkboxcontroller)如下:

export default Ember.ObjectController.extend({ 
isSelected: false, 
selectedListOfItems: [], 
isSelectedChange: function() { 
    var selectedListOfItems = this.get('selectedListOfItems'); 
    var itemId = this.get('id'); // comes from the model.items.id 
    debugger; 
    if (this.get('isSelected')) { 
     // add itemId to the selected array 
     var index = selectedListOfItems.indexOf(itemId); 
     if (index > -1) { 
      selectedListOfItems.splice(index, 1, itemId); 
     } else { 
      selectedListOfItems.push(itemId); 
     } 
    } else { 
     // remove itemId from the selected array 
     var index = selectedListOfItems.indexOf(itemId); 
     if (index > -1) { 
      selectedListOfItems.splice(index, 1); 
     } 
    } 
    this.set('selectedListOfItems', selectedListOfItems); 
    }.observes('isSelected') 
}); 

我懷疑是我怎麼做全選父控制器(即ObjectController類型)選擇所有孩子的所有複選框。我不確定上面提供的信息是否足夠。請讓我知道你是否需要更多信息。在此先感謝

回答

0

我知道它的工作原理是向偵聽父變量中的任何更改的子項(ItemController)添加一個偵聽器。

這裏就是我所做的:

parentControllerDidChange: function() { 
    if (this.get('parentController.selectedAllItems')) { 
     this.set('isSelected', true); 
    } else { 
     this.set('isSelected', false); 
    } 
}.observes('parentController.selectedAllItems') 

該訣竅。現在,如果我切換父控制器上的布爾變量,所有的孩子都會作出反應。沉入美麗!