Javascript 在主干js视图中具有静态变量

Javascript 在主干js视图中具有静态变量,javascript,backbone.js,static-members,Javascript,Backbone.js,Static Members,我不熟悉Backbone.js。我有一个项目,其中有多个视图的层次结构,有时视图需要相互通信。 在互联网上做了一些研究之后,我偶然发现并尝试使用事件聚合器 然而,它没有起作用。我猜“vent”在所有视图中都不是同一个实例。所以,如果有任何方法可以将它定义为一个静态变量,我可能会让它工作。那么,有没有办法在Backbone.js中定义静态变量呢?让我们看看。不太清楚你展示的例子是什么,如果你想在Bb.js(Backbone.js)中创建一个静态的东西,你必须使用一些技巧 例如,您得到了bb.vie

我不熟悉Backbone.js。我有一个项目,其中有多个视图的层次结构,有时视图需要相互通信。 在互联网上做了一些研究之后,我偶然发现并尝试使用事件聚合器


然而,它没有起作用。我猜“vent”在所有视图中都不是同一个实例。所以,如果有任何方法可以将它定义为一个静态变量,我可能会让它工作。那么,有没有办法在Backbone.js中定义静态变量呢?

让我们看看。不太清楚你展示的例子是什么,如果你想在Bb.js(Backbone.js)中创建一个静态的东西,你必须使用一些技巧

例如,您得到了bb.views的列表:

[Code #01]

01|var ViewX01 = Backbone.View.extend({
02|    initialize: function(){
03|        console.log('ViewX01');
04|        this.addToList();
05|    },
06|    addToList : function(){
07|        ViewStaticStyle.elEventos.push(this);
08|        console.log('Push #1: ', ViewStaticStyle.elEventos);
09|    }
10|});
11|var ViewX02 = Backbone.View.extend({
12|    initialize: function(){
13|        console.log('ViewX02');
14|        this.addToList();
15|    },
16|    addToList : function(){
17|        ViewStaticStyle.elEventos.push(this);
18|        console.log('Push #2: ', ViewStaticStyle.elEventos);
19|    }
20|});
21|var ViewX03 = Backbone.View.extend({
22|    initialize: function(){
23|        console.log('ViewX03');
24|        this.addToList();
25|    },
26|    addToList : function(){
27|        ViewStaticStyle.elEventos.push(this);
28|        console.log('Push #3: ', ViewStaticStyle.elEventos);
29|    }
30|});
31|var ViewX04 = Backbone.View.extend({
32|    initialize: function(){
33|        console.log('ViewX04');
34|        this.addToList();
35|    },
36|    addToList : function(){
37|        ViewStaticStyle.elEventos.push(this);
38|        console.log('Push #4: ', ViewStaticStyle.elEventos);
39|    }
40|});
初始化时将模拟静态变量的视图/模型:

[Code #02]

01|var ViewStaticStyle = Backbone.View.extend({
02|    initialize: function(){
03|        console.log('Init static variable');
04|        ViewStaticStyle.elEventos = []; // <- This one is a static array ;)
05|    }
06|});
然后在$(document).ready()时:

所以[Code 02]行[04]是“静态”的东西。
希望有帮助。

应要求提供源代码。

是的,可以使用
extend
向任何主干对象添加静态变量:

obj.extend( protoProps, staticProps );
e、 g:


但是,,我不确定您在这种情况下是否需要它。

您能告诉我们您已经得到了什么吗?来自基于类的面向对象语言的静态变量概念在javascript世界中没有简单的转换,类似的结果可以通过闭包等实现。主干之间存在几种通信模式和框架视图,例如一个好的消息传递框架。如果你能发布一些你正在尝试的代码,我们可以建议你的选择。
[Code #04]

01|// Instantiate the static array
02|var Eventitoz = new ViewStaticStyle();
03|// Instantiate the MasterView, add it to the window in case you 
04|// want to test the "static" thing further via browser console ;)
05|window.App = new MasterView();
obj.extend( protoProps, staticProps );
var MyView = Backbone.View.extend( { events: ... }, {
    myStaticVar: 'anything'
} );
...
var value = MyView.myStaticVar;