Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从不同的视图访问变量?_Javascript_Backbone.js - Fatal编程技术网

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