使用下划线模板的骨干视图如何避免在view.tag元素中包装模板

时间:2014-01-05 00:24:15

标签: backbone.js underscore.js

通常在骨干/下划线模板中,我们有模板

<script type="text/template" id="something">
    <%=value%>
</script>

当我们在视图中实例化它时,我们得到包含在元素中的内容。所以下面的陈述

template: _.template($('#something').html()),

将产生类似

的标记
<div>MyValueHere</div>

我想要做的是在模板中指定包装元素 即。

<script type="text/template" id="something">
    <div>
       <%=value%>
    </div>
</script>

所以在打电话时

template: _.template($('#something').html()),

我想要的结果是

<div>
    MyValueHere
</div>

而不是以下(这是将模板包装在主干视图中找到的标签中的结果)

<div>
    <div>
        MyValueHere
    </div>
</div>

任何想法如何有效地做到这一点?如果不是太麻烦,我真的很感激jsFiddle。

1 个答案:

答案 0 :(得分:1)

render中的常见模式如下所示:

render: function() {
    this.$el.append(this.template(...));
    return this;
}

但您可以使用append调用替换通常的setElement来电,将视图el替换为您自己的render: function() { this.setElement(this.template(...)); return this; }

<div>

演示:http://jsfiddle.net/ambiguous/t977y/

this.el来电之前,您仍会在setElement内创建{{1}},但这可能并不重要。