2016-01-15 3 views
0

Я собираюсь через компоненты Knockoutjs (http://knockoutjs.com/documentation/component-overview.html) для создания повторно используемых виджетов. Я искал достаточно, но не смог найти пример того, как добиться наследования. Например, предположим, что у вас есть компонент базового окна, а другие окна могут наследовать его и переопределять методы. Возможно ли это в Нокауте?Достижение наследования в компонентах knockoutjs

+0

Может потребоваться уточнить некоторые условия здесь. Я предполагаю, что «окно» означает HTML-часть компонента? И вы упоминаете наследование: компоненты нокаута поддерживают повторное использование и вложенность, но ничего конкретно о наследовании? – Quango

+0

Я имел в виду модальное окно или всплывающее окно – VJAI

ответ

1

«Favor composition over inheritance» часто говорят, но редко практикуются. Я думаю, что это должно вступить в игру здесь. Наследование следует использовать для расширения. Если вы переопределяете методы, вы должны поддерживать композицию.

Компоненты сами по себе, композиты объектов (их модели) и шаблоны, а не традиционные объекты с данными и методами.

Очевидно, что вы можете взять часть viewmodel и наследовать ее или создать новую модель, которая ее включает. Создайте новый компонент на основе новой модели просмотра, используя либо старый шаблон, либо новый (я не вижу разумного способа наследования из шаблона, хотя вы могли бы создать новый шаблон, который включает старый).

Одним словом, возьмите шаблон и viewmodel отдельно вместо того, чтобы пытаться наследовать от компонента.

Смежные вопросы