Knockout呈现html字符串

时间:2014-01-16 03:40:16

标签: knockout.js

是否有任何方法可以在敲门声中使用html字符串进行渲染?

var html = ko.renderFromString('<p data-bind="text:name"></p>', {name:"Fred"});

这对我正在做的事情非常方便。

$(".container").append(html);
$(".container").on("click", "p", function(e){
console.log(ko.dataFor(this));});

1 个答案:

答案 0 :(得分:7)

如果你不愿意搞乱模板引擎,试试这个:

ko.renderFromString = function (html, data)
    {
    var node = new DOMParser().parseFromString(html, "text/html");
    this.applyBindings(data, node.body);
    var res = node.body.innerHTML.toString();
    this.cleanNode(node);
    delete node;
    return res;
    };

它基本上从你的Html字符串创建一个临时(内存)DOM元素,绑定你的数据,返回绑定元素的innerHTML然后丢弃它。