我正在使用Backbone创建一个应用程序,它遵循以下结构:
App = {
Models: {},
Views: {},
Collections: {},
Routers: {}
};
在设计对象时 - 在本例中为View - ,我执行以下操作:
App.Views.ProductsView = Backbone.Model.extend();
但是,我想要这样的东西:
App.Views.Products.IndexView = Backbone.Model.extend();
什么是重要的?
如果我之前宣布App.Views.Products = {}
,一切都会奏效 - 但我想自动完成;没有任何先前的声明。
根据我的问题,你能给我一个想法吗?
答案 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 || {};
这样您就不需要事先创建对象。