Durandal — открытие нескольких вкладок с одним и тем же представлением и моделью представления

У нас есть пункт главного меню, скажем WorkFlow. Всякий раз, когда вы нажимаете на нее, открывается вкладка, в которой загружается пользовательский интерфейс для рабочего процесса. Обратите внимание, что эта вкладка является не вкладкой браузера, а вкладкой внутри пользовательского интерфейса приложения. Рабочий процесс состоит из четырех экранов, управляемых собственными представлениями и моделями представлений. Пользователь может выполнять этот рабочий процесс, вводя данные, делая выбор и т. д. и перемещаясь вперед и назад между экранами рабочего процесса.

Требование состоит в том, чтобы при повторном щелчке пользователем элемента меню WorkFlow открывались несколько вкладок, каждая из которых содержит экраны рабочего процесса, которые могут выполняться независимо от тех же рабочих процессов, открытых на других вкладках. Например, на первой вкладке вы можете перейти к экрану 2 в рабочем процессе, а на второй вкладке вы можете перейти к четвертому экрану, а затем, если вы переключитесь между этими вкладками, каждый рабочий процесс сохранит свое состояние и данные, как работает kayak.com. . Суть проблемы в том, что мы на самом деле не хотим, чтобы модели представления были общими для нескольких экземпляров одного и того же представления, которое мы открываем на вкладках. Как этого можно добиться с помощью Durandal/KnockOut?

Спасибо,

Субин


person Subin    schedule 12.07.2013    source источник


Ответы (1)


Итак, по сути, вы пытаетесь отобразить несколько экземпляров одной и той же модели представления рядом друг с другом, верно? Как насчет того, чтобы Durandal отображал только BASE-Workflow ViewModel, но внутренне рендерил X раз с использованием шаблонов?

Чтобы поймать щелчок на TabItem, вместо создания MapNav используйте MapRouter и установите для видимости значение false, затем в оболочке или где бы вы ни отображали элемент, создайте свою пользовательскую запись с привязкой данных Click. Там вы можете отправить определенный код в свою модель BaseWork, чтобы она поняла, как создать еще один шаблон.

Я тоже новичок в Дюрандале, но я бы попытался обойти эту проблему.

Надеюсь это поможет

person zewa666    schedule 31.07.2013