【问题标题】:Knockout dynamic templates do not load in IE9Knockout 动态模板不会在 IE9 中加载
【发布时间】:2015-02-06 07:27:45
【问题描述】:

演示:http://jsfiddle.net/bL7qatx1/

在 IE10+\Chrome\FF 中,上面的小提琴工作正常。但是,在 IE9 中,动态添加的模板不会加载到 div 中(脚本会加载到 DOM 中)。

var contentsElem = $('#contents');

var dynamicTemplateContents = '<div>This is the dynamic template...</div>';
var scriptElem = $('<script id="dynamic-template" type="text/html">');
scriptElem.html(dynamicTemplateContents);
$('body').append(scriptElem);

var vm = {
    template1: 'static-template',
    template2: 'dynamic-template',
};

ko.applyBindings(vm);

我找到了https://github.com/knockout/knockout/issues/777,这意味着它应该可以工作。但是,我的代码似乎有些不同。

脚本元素被添加到 DOM 中,但未绑定到 KO 中的 div。由于某种原因,这在 IE9 中不支持吗?有没有办法让它工作?

【问题讨论】:

    标签: javascript jquery knockout.js internet-explorer-9


    【解决方案1】:

    我刚刚发现我的代码有什么不同...

    工作演示:http://jsfiddle.net/bL7qatx1/1/

    显然...

    var scriptElem = $('<script id="dynamic-template" type="text/html">');
    scriptElem.html(dynamicTemplateContents);
    $('body').append(scriptElem);
    

    ...与...不一样

    $('body').append('<script type="text/html" id="dynamic-template">'+dynamicTemplateContents+'</' + 'script>');
    

    ... 在 IE9 上。不过不知道为什么。 (如果有人知道,我很想听听解释)

    【讨论】:

    • 它看起来像是 IE9 中 DOM 的一个怪癖。如果您开始检查元素,则初始版本似乎已在脚本标记中嵌入了整个 div 元素等,如您所期望的那样带有缩进/换行符等。第二个是内联的,脚本的开始和结束标签都在一行上。基于此,我尝试使用 .text 而不是 .html - 这似乎有效:jsfiddle.net/6ubm17ta/1
    猜你喜欢
    • 1970-01-01
    • 2015-01-04
    • 2012-10-09
    • 2012-09-03
    • 2017-04-08
    • 2016-03-29
    • 2011-05-03
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多