2015-10-21 4 views
0

В проверке нокаута таблица messagetemplate загружается динамически, даже если я не ссылаюсь на файл, плагин проверки ищет файл и автоматически загружает его. Так что мне было интересно, действительно ли это работает с шаблонами нокаута? или мне нужно загрузить их в свой код?Шаблон нокаута из внешнего файла

+0

шаблоны нокаутов по умолчанию не загружаются из внешних файлов. Вы вручную загружаете их, например jQuery или другие js, реализуете свой «пользовательский компонентный загрузчик» или «require.js» или «вставляете» их в свой html. – Dandy

+0

Я закончил с помощью нокаута-amd-помощников, однако шаблон загружается, но не отображается –

ответ

0

Вы можете получить шаблон с сервера, добавить его в свой DOM и вызвать applyBindings.

ko.applyBindings(yourViewModel, document.getElementById("newTemplateId")); 
0

Мы загружаются шаблоны следующим образом:

В заголовке добавить рефов в один файл шаблона или файла, содержащего каскадные шаблоны:

<script id="templateId" src="templates/template.html" type="text/html"></script> 
    <script src="templates/a_set_of_concatenated_templates.html" type="text/html"></script> 

Где-то внизу проживает шаблоны кода загрузки, а затем создать корневую модель и применить привязки:

<script> 
    (function() { 
     var promises = $("script[type='text/html']").map(function(_, script) { 
      if(script.src) { 
       var deffered = $.Deferred(); 
       $.get(script.src, function(tmpl) { 
        script.text = tmpl; 
        if(tmpl.indexOf('type="text/html"') !== -1 || tmpl.indexOf("type='text/html'") !== -1) { 
         $(document.body).append(tmpl); 
        } 
        deffered.resolve(); 
       }) 
       return deffered.promise(); 
      } 
     }); 
     $.when.apply($.when, promises).done(function() { 
      ko.applyBindings(createRootModel()); 
     }); 
    })(); 
</script> 

Примечание: в качестве вы можете видеть из кода, мы используем jQuery

+0

Спасибо за вашу помощь, однако плагины-нокауты-amd-helpers мне очень помогли –

Смежные вопросы