1

我正在使用 koExternalTemplateEngine 加载外部模板。

当模板位于同一站点或从同一服务器上的另一个站点提供服务时,这可以正常工作。

但是,当我尝试在远程服务器上引用模板时,它不起作用。我得到 http 200 ok,但状态代码为 0(响应中没有任何内容,也没有 html)。

代码示例如下:

<script src="Content/Scripts/ko/lib/koExternalTemplateEngine_all.js"></script> 
<script>infuser.defaults.templateSuffix = ".tmpl.html";
infuser.defaults.templateUrl = "http://www.anotherServer.com/koTemplates";</script>
<div data-bind="template: { name: 'koTemplate1' }"></div>

是否可以在远程服务器上引用模板,如果可以,我错过了什么?

4

1 回答 1

0

我建议您使用 requireJS 及其文本插件来加载外部跨源内容并在那里配置 xhr 使用:

config: {
        text: {
            useXhr: function (url, protocol, hostname, port) {
                return true;
            }
        }
    }

您可以在 requirejs 配置中使用此属性将其设置为使用 xhr 并激活 CORS。

确保这在 ie 6 和 7 中不起作用,对于 ie 8 和 9,您需要使用:

window.XDomainRequest

完成所有这些操作后,您可以简单地将外部模板调用为 requirejs 模块依赖项,如下所示:

define("moduleName", ["ko", "text!templates/surveys.html"], 
function(html){
    $('body').append(html);
    ko.applyBindings(new viewmodel)...
});

一些不错的链接: require.js 正在请求 html 文件,但将它们作为脚本元素提供

https://github.com/requirejs/text

为 IE 配置 xdr

于 2013-05-01T09:24:52.863 回答