yandex-ui / noscript

Noscript: JavaScript MVC Framework for building SPA
http://yandex-ui.github.io/noscript/
MIT License
34 stars 22 forks source link

Неконсистентость при работе с параметрами #617

Closed vitkarpov closed 8 years ago

vitkarpov commented 8 years ago

Столкнулся со следующей некосистентностью при работе с параметрами синхронной и асинхронной вьюшек.

'v-1&': {
    'v-2': true
}

v-1 в своей декларации доопределяет параметры через params.

В случае асинхронной v-1 вьюшка v-2 получает все параметры от v-1 (и прокидывает их вниз по дереву, если там есть еще виды).

В случае синхронной v-1 вьюшка v-2 получает только глобальные параметры апдейта.

vitkarpov commented 8 years ago

@chestozo @Katochimoto

vitkarpov commented 8 years ago

Вообще, я столкнулся с тем, что хочется получить параметры от родительской вьюшки в синхронном апдейте. Пример простой:

'v-1': {
  'v-2': true
}

v-1— вьюшка в коллекции, она вычисляет дополнительный параметр на основании того, что получила в свои параметры от модели.

v-2 хочет использовать этот параметр (зависит от такой же модели, которая требует этот параметр), однако — она не получит его в случае синхронного апдейта.

В итоге, мне приходится вычислять этот параметр снова и снова во всех вложенных вьюшках (потому что параметр модельки из v-1 прокидывается рекурсивно вниз, но не вычисленный параметр)

Как быть?

vitkarpov commented 8 years ago

Пока приходят в голову всякие решения «в лоб», типа, флага leakParamsIntoNestedViews для вьюшки и все такое

chestozo commented 8 years ago

А что у v1 и v2 в декларации? params / params+ / params- ?

vitkarpov commented 8 years ago

Просто params. Сделаю пример небольшой в noscript-demo.

vitkarpov commented 8 years ago

Написал на это дело тест-кейс в noscript-demo ↑

Кажется, какой-то минорный кейс, т.к. глобальные параметры дочерние вьюшки по-прежнему получают, а на параметры от родителя — не должны рассчитывать.