2015-03-09 3 views
0

Я хотел бы сделать обычную привязку popover (bootstrap).Передача шаблона в пользовательское привязку к нокауту

Я определил это так:

ko.bindingHandlers.popover = { 
     update: function (element, valueAccessor) 
     { 
      var template = ko.unwrap(valueAccessor); 

      $(element).popover({ 
       placement: 'top', 
       html: true, 
       content: 'text!' + template() <---- How can i get html into here? 
      }); 
     } 
    }; 

    <button data-bind="popover: 'templates/mytemplate.html'"> 
     PopOver 
    </button> 

Этот вопрос, я не знаю, как вводить HTML я хочу. Естественно, мне хотелось бы, чтобы путь к шаблону был разрешен, но для работы с текстом требуется текст! плагин не идет так хорошо, как я надеялся.

Я подозреваю, что я пропускаю что-то гораздо более простое?

+0

Unrelated к вашей заявленной проблеме. Вы разворачиваете неправильную вещь в своей пользовательской привязке. Вы должны разворачивать возвращаемое значение функции valueAccessor, а не valueAccessor. – CrimsonChris

ответ

0

Прямо сейчас ваш шаблон - это строковые шаблоны/mytemplate.html. Это, вероятно, не то, что вы хотите, вы хотите текст в этом файле. Используйте что-то вроде fs.readFileSync, чтобы синхронно получить текст из этого файла.

Если вы намерены передать путь вашего html в свою привязку, вы можете изменить имя переменной из шаблона в путь.

1

Просто сделать Ajax запрос на шаблоне

$.ajax(template).done(function (templateData) { 
    $(element).popover({ 
     placement: 'top', 
     html: true, 
     content: templateData 
     }); 
}); 
+0

Обратите внимание, что в этом случае вам нужно изменить 'ko.unwrap (valueAccessor)' на 'ko.unwrap (valueAccessor())' – Neps