Я пытаюсь реализовать многосегментную строку в таблице. Родительский контроллер - это просто контроллер объекта. Он имеет модель, и представление выполняет итерацию по набору записей модели как отдельные строки. Я применил itemController для всех строк в модели. Это работает. Но для функции «selectAll» в родительском контроллере я не могу получить все элементы (индивидуально). У вас есть идея, как это сделать? Вот моя работа до сих пор:Функция SelectAll с Ember ObjectController и ItemController
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]')
И мой Пункт Controller (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')
});
Мои сомнения в том, как я делаю SelectAll на родительском контроллере (т.е. типа ObjectController), который выбирает все флажки всех детей. Я не уверен, что информации, которую я предоставил выше, достаточно. Пожалуйста, дайте мне знать, если вам нужна дополнительная информация. Заранее спасибо