【问题标题】:Knockout's HTML binding + SVGKnockout 的 HTML 绑定 + SVG
【发布时间】:2014-09-10 05:11:06
【问题描述】:

我正在使用 Knockout 通过将字符串传递到使用 html: 绑定的 SVG 数据绑定来呈现动态 SVG。在 Chrome 中,这非常有效。在 Firefox 中,它会正确设置 DOM(即我可以看到子 svg 元素存在于 firebug 中),但图形本身不会显示。

我做了一个小提琴:https://jsfiddle.net/4eTJL/1/,但有趣的是,Firefox 的行为显示在小提琴中的两个浏览器中。

【问题讨论】:

    标签: javascript firefox knockout.js svg


    【解决方案1】:

    <svg> 标签没有innerHTML 属性,这就是ko html 绑定不起作用的原因,但是您可以通过将所有svg 内容放入logo 变量中,然后将其绑定到标准html 标签来避免此问题.

    https://jsfiddle.net/4eTJL/2/

    <div data-bind="html: logo"></div>
    
    var vm = {
        logo: '<svg viewBox="0 0 50 50" class="center-block" xmlns="http://www.w3.org/2000/svg" width="80" height="80" data-bind="xml: logo"><rect ry="8" rx="8" id="svg_2" height="50" width="50" y="0" x="0" stroke-width="5" fill="#bfbfbf"></rect><text font-family="Graduate" textLength="40" lengthAdjust="spacingAndGlyphs" text-anchor="middle" x="25" y="37" font-size="33" fill="crimson" stroke="black" stroke-width="1.25">NO</text></svg>'
    };
    
    ko.applyBindings(vm);
    

    【讨论】:

    • 我不知道为什么 Chrome 显示从本地测试到 jsfiddle 的结果不同。我尝试在本地和 jsfiddle 上玩 DOCTYPE,但它并没有改变任何东西:(
    • 做到了!不过我也很好奇。这可能与在存在 jQuery 的情况下敲除的 html 绑定如何工作有关?文档提到它做了一些不同的事情。
    猜你喜欢
    • 1970-01-01
    • 2014-06-09
    • 2017-06-10
    • 1970-01-01
    • 2015-08-15
    • 2015-04-05
    • 2018-10-19
    • 1970-01-01
    • 2017-01-10
    相关资源
    最近更新 更多