Переписать viewCollection (возможно и modelCollection) #175

Closed
chestozo opened this Issue Nov 6, 2013 · 4 comments

Comments

Projects
None yet
2 participants
Member

chestozo commented Nov 6, 2013

Наткнулись сегодня с Игорем на такой баг:
viewCollection не умеет перерисоввывать subview (сейчас перерисоввывается всё сразу, см ns.ViewCollection.prototype._updateHTML).

Глядя на код viewCollection хочется его переписать (поддерживать такой код довольно сложно).

Мне нужно подтверждение, что вы к этому готовы.
И тогда мы с Игорем его попробуем переписать.
/cc @doochik @edoroshenko

Чего именно хочется добится этой перепиской:

  • ns.View ничего не должен знать про ns.ViewCollection
  • постараться избавиться от длинных методов (стараться, чтобы метод умещался на один экран, желательно меньше).
Contributor

edoroshenko commented Nov 6, 2013

Коллеги, простите, но вы хотите несколько неправильного.

Первое. Задачу нужно сформулировать несколько иначе: не "переписать vewCollection", а "переписать механизм subview". Да, viewCollection сейчас далёк от идеала, но это другая задача.
То, что сейчас сделано в subview - это не продакшеновое решение, а доказательство концепции. Кроме того, что это не работает во viewCollection, у subview есть ещё масса проблем. При определённом использовании subview не только ничего не экономит, но и обходится гораздо дороже, чем если бы это был отдельный view.
На данный момент я вам рекомендую отказаться от subview и просто сделать отдельный вид. Это будет простое и эффективное решение. В нашем проекте мы так и поступили. Я готов вам в этом помочь.

Второе. Не надо сейчас ничего делать с viewCollection, т.к. я уже сейчас делаю заход на его доработку. Про subview я тоже думаю, более того мы обсуждали это с @doochik и уже есть хорошие мысли, как их переделать правильно. Сейчас статус такой: есть большая пачка мыслей, которые хочется реализовать. И перед этим я хочу их доступно сформулировать и широко обсудить. А затем делать.

Member

chestozo commented Nov 7, 2013

Хорошо, раз ты собираешься глобально всё переписывать - ок, пока повременим.

На данный момент я вам рекомендую отказаться от subview и просто сделать отдельный вид.

Ну мы не можем так сделать:

  • у нас есть viewCollection и оно зависит от модели m.
  • при любом изменении модели m перерисоввываться вся коллекция

Решением этой проблемы было использование фиктивного subview (кстати это костыль, да).
Но для viewCollection subview не работают.

Member

chestozo commented Nov 7, 2013

Решением нашей проблемы было бы, кстати, если бы в декларации view можно было бы указать, от какой части модели мы зависим, к примеру, так:

ns.ViewCollection.define('comments', {
  models: {
    'photo': [
      '.author.id',
      '.author.login'
    ]
  }
});

Правда, это может оказаться сильно медленнее.
Но, вроде бы, удобно.
И часть кейсов использовать subview тоже покрывает.

/cc @doochik @i2r @edoroshenko @pasaran @mctep @basvasilich

Member

chestozo commented Oct 26, 2016

Так оно и есть сейчас - умная подписка на модели.
Но код коллекций всё ещё треш (:

@chestozo chestozo closed this Oct 26, 2016

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment