gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-28 02:05:40 25 4
gpt4 key购买 nike

我有一个不断增长的强大应用程序,有很多变量。当我在更高级别创建一个变量时,需要将其沿袭传递,因此需要花费大量时间来继续编写代码来管理变量的传递。如果我知道我总是想传递哪些变量(不一定要备份,因此这些变量不一定是全局的,只是单向的),我可以在初始化函数中编写什么方法来完成此任务,而无需管理命名惯例?

此代码可能在每个级别都最有用,因此当我在父级别创建要传递给 subview 的参数时,每个 subview 只会迭代这些参数并将它们附加到传入的名称。

因此,如果有一个父 View Fruits,它会创建所有 subview Oranges,而 Oranges 创建所有 NavelsValencias,位于 OrangesNavelsValencias 的 initialize(options),将会有一个函数迭代每个options 属性,并将其自身设置为 View 。如果 options 在父 View 中创建了 5 个数字属性,则它看起来像 this.1 = options.1;this.2 = options.2; this.3 = options.3;this.4 = options.4;this.5 = options.5; 每个级别。

这将允许我仅在父 View 中管理名称,尽管我必须知道名称,因为它不会出现在每个 subview 的文件中,但我对此表示同意,因为属性在整个 View 中都是唯一的层次结构,并且任何唯一的名称都可以在传递给 subview 之前进行操作。

我正在尝试这样的中间 subview :

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);
}
});
});

最佳答案

为什么要在 View 中进行所有操作。我觉得这是一个不好的做法,因为从技术上讲,View 应该完全是数据或 Model。如果不是,模型和 View 将紧密耦合。

而是创建一个模型,将数据转换为您需要的格式。

模型内部有parse函数,该函数将在initialize之前调用。

因此所有计算都可以在那里执行,从而使 View 变得无知..

define([ … ], function( … ){
return Backbone.Model.extend({
initialize: function() {

},
parse: function() {
// Do your changes here
}
});
});

关于javascript - Backbone中未知数量和参数属性名称的动态实例化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17793491/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com