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