我有一个不断增长的强大应用程序,有许多变量。当我在更高级别创建变量时,需要沿着谱系传递,需要花费大量时间来编写代码来管理变量传递下来。如果我知道哪些变量我总是要传递(不一定要备份,所以这些变量不一定是全局的,只是单向的),我可以在initialize函数中编写什么方法来实现这一点,而无需管理命名约定?
此代码可能在每个级别最有用,因此当我在父级创建参数以传递给子视图时,每个子视图将迭代参数并将它们与传入的名称相连接。 / p>
因此,如果有父视图Fruits
,则会创建所有子视图Oranges
,而Oranges
会创建所有Navels
和Valencias
, initialize(options)
,Oranges
和Navels
的{{1}},会有一个函数遍历每个Valencias
属性,并将自身设置为View。如果options
在父视图中创建了5个数字属性,则它看起来像options
,this.1 = options.1;
,this.2 = options.2;
,this.3 = options.3;
和this.4 = options.4;
在每个级别。
这将允许我仅在父视图中管理名称,虽然我必须知道名称,因为它不会出现在每个孩子的文件中,但我对此感到满意,因为属性在整个过程中都是唯一的层次结构,在将它们传递给子视图之前,可以操纵任何唯一的名称。
我正在尝试这样的中间儿童观点:
this.5 = options.5;
答案 0 :(得分:1)
为什么要在视图中执行所有操作。我认为这是一种不好的做法,因为从技术上讲View
应该完全愚蠢数据或Model
。如果不是,模型和视图将紧密耦合。
而是创建一个模型,将数据转换为您需要的格式。
模型中有parse
函数,将在initialize
之前调用。
所以所有的计算都可以在那里进行,使视图无知......
define([ … ], function( … ){
return Backbone.Model.extend({
initialize: function() {
},
parse: function() {
// Do your changes here
}
});
});
答案 1 :(得分:0)
Per @ go-oleg我使用了Bracket表示法:这[key] = options [key];