在属性内渲染模板

时间:2017-08-30 12:07:47

标签: templates knockout.js data-binding

我有一个模板,我试图在bootstrap popover中呈现,但是当我执行下面的代码时,它只呈现[object Object]。是否有可能以某种方式呈现完整的模板?

<a data-toggle="popover" data-placement="top" data-trigger="hover" title="sometitle" data-bind="attr: { 'data-content': { template: { name: 'a-template', data: somedata} } }"></a>

感谢您的圣人建议和更好的智慧!

1 个答案:

答案 0 :(得分:1)

您可以做的是,在计算字段中渲染模板并将该字段分配给该数据内容属性。见下文:

指定您的模板

<script id="myTemplate" type="text/html">
        // Some HTML here
</script>

根据上面指定的模板生成计算字段。

<script>
function myViewModel() {
    var self = this;
    self.templateField= ko.computed(function(){
        var temp = $("<div>");
        ko.applyBindingsToNode(temp[0], { template: { name: 'templateName', data: self } });
        var html = temp.html();
        temp.remove();
        return html;
    }, self);
}
</script>

现在使用属性中创建的计算字段。

<anyElement data-bind="attr: {'data-content': templateField}"/>