Knockout编码的html绑定

时间:2014-08-15 03:52:11

标签: knockout.js

如何使用html绑定呈现处于编码状态的html?目前我拥有的只是给我文本而不是渲染的html。 http://jsbin.com/wudopeseloya/1/edit

var ViewModel = function() {
    this.myHtml = "<h1>hello</h1>";
};

ko.applyBindings(new ViewModel()); 

<div data-bind="html:myHtml"></div>

1 个答案:

答案 0 :(得分:4)

首先确定如何解码html字符串。这里列出了许多选项:HTML Entity Decode

假设您有一个名为decodeEntities的全局函数,您可以提供一个只对myHtml执行此解码的计算属性。

var ViewModel = function() {
    this.myHtml = "&lt;h1&gt;hello&lt;/h1&gt;";
    this.decodedHtml = ko.computed(function(){
        return decodeEntities(this.myHtml);
    });
};

请注意,由于myHtml不是可观察的,因此,无论您之后分配给myHtml的值是什么,decodeHtml将始终解析为相同的值并且永远不会触发更新(除非手动强制执行)。

实现相同结果的其他方法是解码myHtml内联或创建一个现场解码的自定义绑定。