Ожидается ли такое поведение?Ember itemController получает рестальтирующую информацию, когда ArrayController переупорядочивает
App.PostsController = Ember.ArrayController.extend({
itemController: 'post',
sortProperties: ['date'],
sortAscending: false
});
App.PostController = Ember.ObjectController.extend({
init: function() {
console.log('post controller init');
this.set('propertyNotIncludedInModel', true);
}
});
Скажем, у меня есть список сообщений, и я в строке редактирую одну из дат сообщения. PostsController
изменит порядок в списке. Как только это произойдет, консоль войдет в журнал, в котором будет изменена дата, указанная init
. Конечно, любой контроллер свойства (не модель свойства), больше нет (я имею в виду, это новый объект, поэтому любое свойство, которое не имеет причины быть там, не определено).
Вы можете видеть это в этом jsBin.
Это кажется ужасно неправильным. Я чувствую, что это нарушает любую аналогию с реальной жизнью. Если у меня есть куча объектов, сидящих на столе, и я хочу их переупорядочить, я не уничтожаю тот, который я хочу переместить, а затем воссоздаю. Что оправдывает Эмбер за это поведение, и как мне с ним справиться? Мне нужно установить свойства контроллера на объект, положение которого в массиве может измениться. Еще лучше, мне нужны представления и их компоненты, представленные этим объектом, чтобы сохранять и поддерживать свои собственные состояния и свойства, а также - в настоящее время didInsertElement
вызывается на каждом представлении/компоненте под контроллером элемента, что еще больше перепутает. Как я могу убедиться, что свойства и подпункты, которые мне нужны, сохраняются при перемещении объекта?
Я понимаю, что заказ сразу изменится - у меня нет проблем с этим. Это способ изменения порядка. Контроллер элемента, который перемещается, кажется, уничтожается, а затем воссоздается, а затем вставлен в нужное место. И это кажется мне неправильным. – Andrew
Спасибо, хорошая находка по этому вопросу. Они говорят о некоторых других методах, но похоже, что это может быть одной и той же основной причиной. Я буду принимать ваш ответ завтра, если никто другой не найдет ничего более окончательного в то же время. – Andrew