【发布时间】:2014-03-25 20:02:08
【问题描述】:
这是我正在使用的模板
<script type="text/template" id="template-message">
<p class="message"><%= message %></p>
</script>
这是我的 Backbone.View
var MessageView = Backbone.View.extend({
template: _.template(Backbone.$("#template-message").html()),
render: function() {
this.$el.html(this.template(this.model.attributes));
return this;
},
});
我是如何使用它的
var msg = new Message({message: "hello"}),
view = new MessageView({model: msg});
$("body").append(view.render().el);
输出
<body>
<div>
<p class="message">
hello
</p>
</div>
</body>
我理解为什么会发生这种情况(视图的默认 tagName 是 div),但我不希望那里有包装器 div。我想将其视为输出
<body>
<p class="message">
hello
</p>
</body>
我知道我可以在我的视图中拥有这个
var MessageView = Backbone.View.exntend({
tagName: "p",
className: "message",
// ...
});
最终用户将定义模板,因此我不希望在 Backbone.View 源代码中指定这些内容。
如何获得所需的输出并仍将视图绑定到 html?
【问题讨论】:
-
强制您的最终用户扩展您的 BaseMessageView。
-
最终用户将只定义 HTML 模板。他们不是在创建 JS 源文件。
-
显然你可以使用
setElement。见这里stackoverflow.com/questions/7894253/… -
@Gohn67,感谢您的指点。在您的帮助下,我提交了这个问题的答案。