来自外部文件的Knockout模板

时间:2015-10-21 06:50:04

标签: knockout.js

在淘汰赛验证中,即使我没有引用该文件,也会动态加载messagetemplate,验证插件会查找该文件并自动加载它。 所以我想知道这实际上是否适用于淘汰模板?或者我必须在我的代码中加载它们吗?

2 个答案:

答案 0 :(得分:0)

您可以从服务器获取模板,将其添加到DOM并调用applyBindings。

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

答案 1 :(得分: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