Durandal (Jumpstar) — добавление панели поиска для просмотра результатов.

Я создал представление в Durandal для отображения списка продуктов.

Я хочу иметь возможность искать эти продукты, поэтому я хочу добавить форму поиска на боковой панели, которая будет отображаться только для этого вида продуктов.

Боковая панель должна быть объявлена ​​за пределами представления продуктов, чтобы она не обновлялась вместе с ней всякий раз, когда я меняю фильтр в форме поиска. Значит, мне нужна внешняя боковая панель, которая обновит представление и появится только при активации этого представления.

Я не знаю, как начать реализовывать это и как лучше всего это сделать. Помощь была бы отличной.


person DorR    schedule 07.04.2013    source источник


Ответы (1)


Здесь есть несколько достойных подходов, но лучший выбор будет зависеть от того, как вы выделили область боковой панели для формы поиска.

Все сводится к тому, насколько тесно вы хотите, чтобы модель просмотра продуктов и форма поиска были тесно связаны между собой.

Совместное использование одной и той же модели представления (или ее части): если вы можете совместно использовать одни и те же наблюдаемые данные KnockOut между обеими моделями представления, то все остальное в значительной степени «обычный бизнес». Вы можете добиться этого, разделив ko.observable между моделью представления продуктов и моделью представления формы поиска. Это можно сделать одним из следующих способов:

Когда у вас есть доступная общая модель, вы можете привязываться к ней из обоих представлений, и наблюдаемость KnockOut должна быть в состоянии предоставить всю необходимую обратную связь.

Более слабосвязанный подход заключается в использовании метода публикации/подписки. Это делает модули довольно независимыми, но с ними связаны последствия управления и обслуживания, как и при использовании глобальных переменных. Я бы рекомендовал это только тогда, когда необходимо, чтобы модели представления были максимально изолированы друг от друга, или когда логистика просто не позволяет моделям представления знать друг о друге.

В сценарии публикации/подписки виртуальная машина поиска просто публикует событие, для которого перечисляет виртуальная машина продуктов, и наоборот, если это необходимо. Есть много библиотек JS, которые предоставляют эту функциональность. Он даже входит в состав Durandal — вот некоторая информация об этом: Durandal: Leverage Publish and Subscribe Также просмотрите справку по событиям Durandal

person Joseph Gabriel    schedule 07.04.2013