Выбор цвета в пользовательском интерфейсе Kendo завершается сбоем при добавлении атрибута привязки данных

Я пытаюсь использовать средство выбора цвета Kendo UI с привязкой Kendo и сталкиваюсь с проблемой.

Выбор цвета в пользовательском интерфейсе Kendo падает при нажатии кнопки "Применить" во всплывающем окне при добавлении атрибута привязки данных.

Когда я нажимаю кнопку "Применить", появляется сообщение об ошибке:

Uncaught TypeError: Cannot read property 'attr' of null

Вы можете увидеть пример здесь:

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width">
  <link href="https://kendo.cdn.telerik.com/2017.2.621/styles/kendo.common.min.css" rel="stylesheet">
</head>
<body>
  
  <div id="variables">
    <div class="variables-grid">
      <div data-template="variable-template" data-bind="source: variables">
      </div>
    </div>
  </div>
  
  <script id="variable-template" type="text/x-kendo-template">
    # var templateId = getTemplateId(Type); #
    <div class="variable">
        <div data-template="#=templateId#" data-bind="source: this"></div>
    </div>
  </script>
  
  <script id="color-variable-template" type="text/x-kendo-template">
    <input class="k-input" data-bind="value: Value" id="color-picker-#=Id#" name="color-picker-#=Id#" type="color" /><script>
 jQuery(function(){jQuery("\#color-picker-#=Id#").kendoColorPicker({});});
    <\/script>
  </script>
    
</script>


</body>
  <script src="https://code.jquery.com/jquery-1.12.4.js"></script>
  <script src="https://kendo.cdn.telerik.com/2017.2.621/js/kendo.all.min.js"></script>
  
  <script>
    
    function getTemplateId(typeId) {
      switch(typeId) {
        case 'color':
          return "color-variable-template";
      }
    }
    
    var viewModel = kendo.observable({
      variables: [
        {"Id": "abc-color", "Type": "color", "Name": "Color", "Value": "#ffffff"}
      ]
    });


    kendo.bind($("#variables"), viewModel); 
  </script>
</html>

Когда я удаляю атрибут data-bind, он работает как следует.

1 ответ

Мне кажется, что переменные не созданы правильно.

ЗДЕСЬ есть ссылка Telerik Dojo с внесенной поправкой.

Все, что я сделал, было изменить

<div id="variables">
    <div class="variables-grid">
      <div data-template="variable-template" data-bind="source: variables">
      </div>
    </div>
</div>

в

<div id="variables">
  <div class="variables-grid">
    <div>
      <input data-role="colorpicker"
             data-bind="visibile: isVisible,
                        enabled: isEnabled,
                        value: selectedColor,
                        events: { change: onChange}">
    </div>
  </div>
</div>

Дайте мне знать, если это не решит вашу проблему.

ЗДЕСЬ есть ссылка на демонстрацию, которую я использовал для исправления.

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