5

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

    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() {
            ...
        }
    });

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

编辑:在@rabs 回复之后。我对 Backbone 中的静态变量进行了搜索,发现:Simplify using static class properties in Backbone.js with Coffeescript

4

2 回答 2

9

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

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

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

希望对某人有所帮助

于 2014-05-30T15:03:42.107 回答
5

以这种方式声明变量,变量的范围是类而不是实例,类似于静态或类变量。

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

当您创建它时,您可以将查找对象传递给您的实例,这样它将表现为实例变量。

于 2012-10-04T09:32:14.620 回答