backbone.js视图中的tagName键

时间:2015-08-09 04:09:27

标签: javascript backbone.js

我正在开发一个我正在实现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;
    }
}); 

1 个答案:

答案 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