У меня есть вложенный составной вид, который проверяет его модель для коллекции, и если она устанавливает эту коллекцию как свою коллекцию.Marionette: набор настроек после рендеринга не обновляется по модели add
onRender: ->
if model.attributes.has_collection
@collection = model.get 'myCollection'
Это работает очень хорошо, когда модель имеет коллекцию, и вид элемента (ов) все отображения, и при добавлении новой модели в коллекции, появляется новый вид.
Однако, когда нет коллекции, и кнопка нажата для создания новой модели, мне нужно создать модель, установить коллекцию (ее коллекцию) в модель представления и получить представление для отображения модель и любые дополнительные модели, которые добавлены. Я пробовал различные вещи, прямо сейчас я поставил коллекцию на модели, а затем запустить эту функцию:
class List.myCompositeView
childView: myView
// *** //
setChildren: ->
@collection = @model.get 'myCollection'
@render()
Первая модель выглядит как положено, но дальнейшие модели, которые создаются не отображаются. Чтобы повторить, они появляются, когда коллекция установлена в функции onRender. Я понимаю, что есть много кода, который я не добавлял сюда, поэтому, если есть что-то (потенциально) относящееся к проблеме, которое вам нужно знать, сообщите мне. Может ли быть, что представление не является обязательным для событий коллекции должным образом? Благодаря!
Спасибо за ответ! Просто обошел это, и все ближе, но не совсем. Я установил коллекцию и выхожу из вида, чтобы ее проверить: длина коллекции равна 1, длина детского изображения равна 0. Каждый раз, когда я нажимаю кнопку добавления, длина каждого увеличивается на 1 (поэтому я вижу всех новых детей). В принципе, новый childview не создается для первого. –
Теперь я установил коллекцию, отобразил составной вид, а затем позвонил @_initialEvents(), который сохраняет все остальное. Боюсь, я мог бы слишком усложнять это, и не уверен, что у @render() есть какие-то негативные побочные эффекты, которых я должен избегать, но он работает, что является хорошим местом, чтобы быть :) Еще раз спасибо! –