如何在淘汰赛中创建动态模板?

时间:2013-06-15 09:51:58

标签: jquery knockout.js

使用淘汰赛,我可以使用这样的模板:

<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());

这非常有效但我正在尝试动态创建模板,具体取决于我从服务器返回的数据。

有一个article讨论了我面临的同样问题,并描述了一个基于ko.jqueryTmplTemplateEngine的解决方案。

任何人都可以帮我解决这个问题吗?

还是有另一种(更简单的)方法吗?

由于

1 个答案:

答案 0 :(得分:3)

检查一下。如您所见,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

我希望它有所帮助。