Подтвердить что ты не робот

Как связать модель jkoutout с пользовательским интерфейсом стиля мастера

Я использую Knockout js. У меня есть модель представления, которая содержит массив объектов, и я хочу разрешить пользователю редактировать один из объектов с помощью интерфейса стиля мастера. Проблема, с которой я столкнулась, - это мастер будет показывать разные шаги в зависимости от того, какие варианты сделаны. Например:

  • Если пользователь выбирает "Да" на шаге 1, я показываю шаг 2a
  • Если пользователь выбирает "Нет" на шаге 1, я показываю шаг 2b (т.е. другую диалоговую форму).

Это продолжается, так что пути через мастер не линейны.

Мой вопрос привязать все возможные шаги пользовательского интерфейса мастера к модели представления при запуске, хотя некоторые шаги никогда не будут показаны, а привязки на некоторых экранах будут недействительными (например, шаг 5 может привязываться к viewModel.theObject.PropertyA.PropertyB.PropertyC(), но свойствоB по-прежнему остается нулевым на шаге 1).

Лучшим способом может быть привязка к шагам пользовательского интерфейса по мере их отображения, но моя проблема заключается в том, что я не знаю о хорошем способе "отвязать" модель после завершения этапа, чтобы я мог закончить шаг привязан к нескольким объектам из исходного списка!

4b9b3361

Ответ 1

Я думаю, что хороший способ сделать это состоит в том, чтобы ваша модель представления была массивом шагов и привязывала ваш пользовательский интерфейс к "selectedStep". Затем каждый шаг может динамически выбирать, какой шаблон он хочет использовать (например, в post).

Вот приблизительный пример идеи: http://jsfiddle.net/rniemeyer/SSY6n/

Таким образом, привязки шаблонов обрабатывают создание/привязку/очистку динамического содержимого на основе любого шага. Если шаги находятся в наблюдаемом массиве, вы можете даже динамически добавлять шаги. Возможно, у вас есть список всех возможных шагов, а затем есть массив "ActiveSteps", который представляет шаги, которые в настоящее время действительны на основе пользовательских вариантов.