Knockoutjs将文本绑定与另一个元素组合在一起

时间:2012-05-21 09:33:28

标签: knockout.js

我想把内部文本和另一个元素合二为一。 目前我在做:

function menuItem(number, text) {
        this.text = text;
        this.html = '<span><font class="small">' + number + '.</font>' + text + '</span>';
    }

    function viewModelMenu() {
        // Data
        var self = this;
        self.menuItems = [new menuItem('1', 'First'),
            new menuItem('2', 'Second')];
}

并查看:

<div data-bind="html:$data.html"></div>

但是html编码不是safe

我可以使用敲除文本绑定或其他任何东西构建文本吗?

1 个答案:

答案 0 :(得分:0)

正如评论中提到的,如果没有html绑定,你就无法做到这一点,你真的不应该这样做,因为它不安全。在菜单项模板中添加一些额外标记有什么问题

<div>
    <span>
        <font class="small" data-bind="text: number"></font>
        <span data-bind="text: text"></span>
    </span>
</div>

这是安全的,它可以很容易看起来相同,如果数字是可观察的并且更改它将不会重新渲染整个项目。

希望这有帮助。