Dust.js Двусторонняя привязка данных

У меня есть выпадающий список, который довольно прост.

<div>
    <select id="optionDropDown">
        <option value="volvo">{@pre type="content" key="dropdown.option1"/}</option>
        <option value="saab">{@pre type="content" key="dropdown.option2"/}</option>
        <option value="mercedes">{@pre type="content" key="dropdown.option3"/}</option>
        <option value="audi">{@pre type="content" key="dropdown.option4"/}</option>
    </select>
</div>

Мне нужно изменить пользовательский интерфейс всякий раз, когда пользователь меняет выбор в раскрывающемся списке. Мне придется добавить еще <p> с описанием этого конкретного автомобиля.

В настоящее время я делаю это с помощью jQuery, но хотелось бы знать, есть ли какие-то встроенные способы сделать это в Dust.js изменив context или любым другим способом.

1 ответ

Вы все еще можете добиться того же, используя шаблоны пыли

<script type="text/dust" id="tpl">
  <p>Chose: {type}!</p>
</script>
<script type="text/javascript">

  var tpl_src = $('#tpl').html();

  // Compile the template under the name 'tpl'
  var tpl_compiled = dust.compile(tpl_src, 'tpl');

  // Register the template with Dust
  dust.loadSource(tpl_compiled);

  // Whenever a choice is made...
  $('select[id=types]').on('change', function() {

    // Using jQuery ----------------------
    // $('div#selections').append('<p>'+$(this).val()+'</p>');

    // Using dustjs ----------------------

    // Render the template
    dust.render('tpl', { type: $(this).val() }, function(err, out) {

      if(err) {
        console.log(err);
        return;
      }

      // `out` contains the rendered output.
      $('div#selections').append(out);
    });

  });

</script>

Вот полный пример суть

Другие вопросы по тегам