我有一个越来越强大的应用程序,有很多变量。当我在更高级别创建一个需要沿袭的变量时,需要花费大量时间来继续编写代码来管理该变量的传递。如果我知道我总是想传递哪些变量(不一定要备份,所以这些不一定是全局的,只是单向的),我可以在初始化函数中编写什么方法来完成此操作,而无需管理命名公约?
这段代码可能在每个级别都最有用,因此当我在父级别创建要传递给子视图的参数时,每个子视图只会遍历参数并将它们附加到传入的名称中。
因此,如果有一个父视图Fruits
,它会创建所有子视图Oranges
,并在、和中Oranges
创建所有Navels
和,那么将有一个函数遍历每个属性,并将其自身设置为视图。如果在父视图中创建了 5 个数字属性,则它看起来像, , , , 和在每个级别。Valencias
initialize(options)
Oranges
Navels
Valencias
options
options
this.1 = options.1;
this.2 = options.2;
this.3 = options.3;
this.4 = options.4;
this.5 = options.5;
这将允许我仅在父视图中管理名称,虽然我必须知道名称,因为它不会在每个孩子的文件中,但我可以接受,因为属性在整个层次结构中是唯一的,并且可以在将它们传递给子视图之前对任何唯一名称进行操作。
我正在尝试这样的中间子视图:
define([ … ], function( … ){
return Backbone.View.extend({
events : { … },
// options = { 1:thing1, 2: thing2, a: itA, b: itB }
initialize: function(options){
if (options) {
for (var key in options) {
'this.' + key = options[key]; //Here is the line that would accomplish this
}
} else { //…defaults… }
},
render: function(){
// If i needed to manipulate them, I could accomplish this here
var params = {
1: this.thing1,
2: this.thing2,
a: this.itA,
b: this.itB
};
new childView(params);
}
});
});