Каскадное выделение с помощью JsViews: заставить выбор наблюдать другой выбор - PullRequest
0 голосов
/ 12 декабря 2018

У меня есть два элемента select на моей странице, "Make" и "Model".У меня есть большой массив, содержащий все модели, каждая с makeId, которые соответствуют значениям элементов в выборе Make.Я использую конвертер для заполнения данных выбора модели на основе выбранной марки.Конвертер работает при начальной загрузке страницы, но, похоже, он не меняется, когда я меняю марку.Это также изменяется, если массив Моделей изменяется каким-либо образом.Есть ли способ заставить модель выбрать наблюдение, чтобы сделать выбор?Я попытался передать переменную во второй выбор, содержащий значение первого, но это не заставило его наблюдать за изменением.Вот как выглядят эти два выбора:

<select id="Makes" data-link="selectedMake">
  {^{for ~root.data.Makes}}
    <option value="{{:value}}">{{:text}}</option>
  {{/for}}
</select>

<select id="Models" data-link="selectedModel">
  {^{for ~root.data.Models convert='getModelsForMake' ~make=selectedMake }}
    <option value="{{:value}}">{{:text}}</option>
  {{/for}}
</select>

1 Ответ

0 голосов
/ 18 декабря 2018

Необходимо убедиться, что при изменении selectedMake запускается обновление {^{for ~root.data.Models convert='getModelsForMake'}}.Проблема в том, что ваш конвертер, getModelsForMake конвертер зависит от selectedMake - но тег {^ {for}} не «знает об этом».

Существует несколько различных способов указатьзависимость от selectedMake.

Объявить зависимость от {^{for}}:

{^{for ~root.data.Models convert='getModelsForMake' depends='selectedMake'}}

Объявить зависимость от преобразователя, добавив код:

$.views.converters.getModelsForMake.depends = "~root.selectedMake";

Передать вselectedMake в качестве второго аргумента для {^{for}}:

{^{for ~root.data.Models selectedMake convert='getModelsForMake'}}

Ввести зависимость, добавив 'null check' для selectedMake, на {^{for}}:

{^{for selectedMake && ~root.data.Models convert='getModelsForMake'}}

Кстати, у меня есть альтернативные версиикаскадных выделений, теперь включенных в документы в связанных с данными

...