自动属性

时间:2014-07-28 12:27:28

标签: javascript backbone.js

我正在使用Backbone创建一个应用程序,它遵循以下结构:

App = {
  Models: {},
  Views: {},
  Collections: {},
  Routers: {}
};

在设计对象时 - 在本例中为View - ,我执行以下操作:

App.Views.ProductsView = Backbone.Model.extend();

但是,我想要这样的东西:

App.Views.Products.IndexView = Backbone.Model.extend();

什么是重要的?

如果我之前宣布App.Views.Products = {},一切都会奏效 - 但我想自动完成;没有任何先前的声明。

根据我的问题,你能给我一个想法吗?

2 个答案:

答案 0 :(得分:6)

我不确定我是否已经得到它,但您在向链中添加属性之前声明了该属性?

App.Models.Products = {};

App.Models.Products.IndexView = Backbone.Model.extend();

当然,您可以通过多种方式声明它,例如在您创建App

App = {
  Models      : {
        Products : {} // here
  },
  Views       : {},
  Collections : {},
  Routers     : {},
  Views       : {}
};

或作为包含密钥等的文字

App.Models.Products = {
    IndexView : Backbone.Model.extend();
}

作为编辑问题的答案, 你不能 ,javascript没有创建缺失属性的神奇方法,你必须自己声明它们。

答案 1 :(得分:0)

  

如果我之前宣布App.Views.Products = {},一切都会有效    - 但我想自动完成;没有任何先前的声明。

如果您只想在需要时创建对象,则动态创建对象的常用方法是:

App.Views.Products = App.Views.Products || {}; 

这样您就不需要事先创建对象。