我可以在Backbone View中添加属性吗?

Xer*_*rri 5 object backbone.js backbone-views

我已经与骨干工作了一段时间,现在我正在使用一些观点.在我的一些观点中,我有时会添加自定义属性,例如:

    var DataGrid = Backbone.View.extend({
        className:"datagrid",
        lookup: {
            header: "", //Header wrapper row element
            headers: [], //Views in header
            body: "", //Body wrapper row element
            rows: [] //Views in body
        },

        events: {
            ...
        },

        initialize: function() {
            ...
        },

        render: function() {
            ...
        }
    });
Run Code Online (Sandbox Code Playgroud)

如您所见,我将"查找"作为对象的额外属性.我在许多视图中使用DataGrid,我遇到了一种非常奇怪的行为.当我在使用DataGrid的视图之间切换时,仍然会使用旧数据填充"lookup".我在创建一个新的DataGrid时使用"new"但我仍然找到旧数据.我错过了什么吗?

编辑:关注@rabs回复.我在Backbone中搜索了静态变量并发现了这一点:使用Coffeescript在Backbone.js中使用静态类属性进行简化

Mat*_*ble 9

我知道答案已被接受(前一段时间),但是当我最近在一个骨干项目上遇到这个问题时,我认为值得一提的是你也可以将属性定义为一个函数.这对于需要在当前模型中将属性设置为值的视图特别有用.

通过将属性定义为函数,您可以执行类似的操作

var myObject = Backbone.View.extends({
    attributes: function() {
        if(this.model) {
            return {
                value: this.model.get('age')
            }
        }
        return {}
    }
}); 
Run Code Online (Sandbox Code Playgroud)

希望能帮助别人


rab*_*abs 5

以这种方式声明变量变量的范围是类而不是实例,类似于s static或class变量.

所以,查找对象将在您的不同实例之间共享.

您可以在创建它时将查找对象传递给您的实例,这样它将作为实例变量运行.