我正在开发一个我正在实现Backbone.js View的项目。我想在视图中动态创建html标记,但到目前为止我尝试的所有内容都不起作用。是否有更新synax的骨干的新版本?因为我看了一个教程,它适用于那个人,但不幸的是它对我不起作用。这就是我现在所拥有的:
//My view for one book
var BookView = Backbone.View.extend({
model: new Book(),
tagName: function () {
return this.model.get('tr');
},
initialize: function () {
this.template = _.template($('.books-list-template').html());
},
render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
我也试过这个:
//My view for one book
var BookView = Backbone.View.extend({
model: new Book(),
tagName: 'tr',
initialize: function () {
this.template = _.template($('.books-list-template').html());
},
render: function () {
this.$el.html(this.template(this.model.toJSON()));
return this;
}
});
答案 0 :(得分:1)
你的第二个例子应该工作,但让我们保持基础:
var ViewWithTRTagNameClass = Backbone.View.extend({tagName: 'tr'});
var viewWithTRTagName = new ViewWithTRTagNameClass();
console.log(viewWithTRTagName.render().el); // or alert, or $('body').append, etc.
好的,这样才有用。
您的第二个示例更复杂,但与此基本相同,因为您的render
函数返回this
。因此,它应该有一个tr
元素包装内部内容。
顺便说一下,View
的{{1}}是在您实例化时计算出来的 - 这是在tagName
内进行的。
如果您想重新计算元素 - 比如,在您的第一个_ensureElement
之前 - 您可以在适当的时间和适当的检查后调用render
。