Javascript 如何从不同的视图访问变量?
如何从不同的视图访问变量 我想在另一个视图中访问Javascript 如何从不同的视图访问变量?,javascript,backbone.js,Javascript,Backbone.js,如何从不同的视图访问变量 我想在另一个视图中访问selectedColor: 'onClickColor': function(e) { var view = this, selectedColor = $(e.currentTarget).data('color'), //$(this).data('color'); style = $('<style>.highlight { color: ' + sele
selectedColor
:
'onClickColor': function(e) {
var view = this,
selectedColor = $(e.currentTarget).data('color'), //$(this).data('color');
style = $('<style>.highlight { color: ' + selectedColor +'; margin-left: 4px;}</style>');
$('.initial').css('color', selectedColor);
$('.highlight').css('color', selectedColor);
$('html > head').append(style);
//view.canvasColorPick(e);
},
这应该是最好的方式——将一个视图订阅给另一个视图的事件。由于您没有提供您的视图被实例化的范围,我假设它们都在全局范围内。如果您不理解范围的含义,请阅读以下内容: 因此,假设您的第一个视图是这样实例化的:
firstView=newfirstview()代码>。第二个是secondView=newsecondview()代码>
当颜色在firstView中更改时触发事件:this.trigger(“颜色更改”{newColor:“黑色”})代码>。请确保在触发此事件之前已实例化这两个视图
现在您需要订阅firstView事件的secondView:secondView.listenTo(firstView,“颜色更改”,secondView.handleColorChanged)代码>
这里的handleColorChanged
是事件处理程序,它将获取事件参数作为参数
现在所有人:
var FirstView = Backbone.view.extend({
/** your casual code here */
'onClickColor': function(e) {
/** your code here */
this.trigger( "Color changed", { newColor: "black" });
}
});
var SecondView = Backbone.view.extend({
/** your casual code here */
'handleColorChanged': function( eventData ) {
console.log( eventData );
}
});
var firstView = new FirstView(),
secnodView = new SecondView();
secondView.listenTo( firstView, "Color changed", secondView.handleColorChanged );
这不是解决任务的唯一方法。但这是将视图彼此分离的方法。没有一个视图知道另一个视图在大型应用程序中最需要什么,使调试过程变得容易等等
var FirstView = Backbone.view.extend({
/** your casual code here */
'onClickColor': function(e) {
/** your code here */
this.trigger( "Color changed", { newColor: "black" });
}
});
var SecondView = Backbone.view.extend({
/** your casual code here */
'handleColorChanged': function( eventData ) {
console.log( eventData );
}
});
var firstView = new FirstView(),
secnodView = new SecondView();
secondView.listenTo( firstView, "Color changed", secondView.handleColorChanged );