Knockout呈现html字符串

Chi*_*hin 3 knockout.js

是否有任何方法可以从击倒中的html字符串进行渲染?

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

对我正在做的事情来说非常方便.

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

hai*_*770 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;
    };
Run Code Online (Sandbox Code Playgroud)

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