Backbone中动态实例化未知数量和参数属性的名称

时间:2013-07-22 17:15:02

标签: javascript backbone.js

我有一个不断增长的强大应用程序,有许多变量。当我在更高级别创建变量时,需要沿着谱系传递,需要花费大量时间来编写代码来管理变量传递下来。如果我知道哪些变量我总是要传递(不一定要备份,所以这些变量不一定是全局的,只是单向的),我可以在initialize函数中编写什么方法来实现这一点,而无需管理命名约定?

此代码可能在每个级别最有用,因此当我在父级创建参数以传递给子视图时,每个子视图将迭代参数并将它们与传入的名称相连接。 / p>

因此,如果有父视图Fruits,则会创建所有子视图Oranges,而Oranges会创建所有NavelsValenciasinitialize(options)OrangesNavels的{​​{1}},会有一个函数遍历每个Valencias属性,并将自身设置为View。如果options在父视图中创建了5个数字属性,则它看起来像optionsthis.1 = options.1;this.2 = options.2;this.3 = options.3;this.4 = options.4;在每个级别。

这将允许我仅在父视图中管理名称,虽然我必须知道名称,因为它不会出现在每个孩子的文件中,但我对此感到满意,因为属性在整个过程中都是唯一的层次结构,在将它们传递给子视图之前,可以操纵任何唯一的名称。

我正在尝试这样的中间儿童观点:

this.5 = options.5;

2 个答案:

答案 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];