2013-06-15 3 views
3

С нокаута я могу использовать шаблоны, как это:Как создать динамические шаблоны в нокауте?

<div data-bind="template: { name: 'person-template', data: buyer }"></div> 

    <script type="text/html" id="person-template"> 
     <h3 data-bind="text: name"></h3> 
     <p>Credits: <span data-bind="text: credits"></span></p> 
    </script> 

function MyViewModel() { 
     this.buyer = { name: 'Franklin', credits: 250 }; 
} 
ko.applyBindings(new MyViewModel()); 

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

Существует article, обсуждая ту же проблему, с которой я столкнулся, и описываю решение на основе ko.jqueryTmplTemplateEngine.

Может ли кто-нибудь помочь мне заставить это работать?

Или есть другой (более простой) способ сделать это?

Thanks

ответ

2

Проверьте это. Как вы видите, templatoUse создает шаблон, основанный на типе элемента.

self.templatoUse = function (item) { 

    var tmplName = 'tmpl-' + item.type; 

    if ($('#' + tmplName).get().length == 0) { 
     // create template based on item type 
     var content = 'Template ' + tmplName + '<br/>&nbsp;<span data-bind="text:name"></span><br/>'; 

     // wrap the template  
     content = '<div id="' + tmplName + '">' + content + '</div>'; 

     // had it so it can be used 
     $('#templateContainer').append(content); 
    } 
    return tmplName; 

} 

See fiddle

Я надеюсь, что это помогает.

+0

Отлично - это то, что я искал – Marcel

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