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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/eclipse/9.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
Backbone.js 主干访问其他视图的数据/事件_Backbone.js_Backbone Views - Fatal编程技术网

Backbone.js 主干访问其他视图的数据/事件

Backbone.js 主干访问其他视图的数据/事件,backbone.js,backbone-views,Backbone.js,Backbone Views,我有一个fuelux网格的view1,其中有一个组合框的格式化程序,用于另一列。我还有另一个视图2,其中有菜单。单击view2中的某个按钮/下拉列表,我捕获了一个事件 在view2中,如何访问view1的组合框?你可能猜到了,我对开发非常陌生。这是我一直使用的模式: 在全局命名空间(应用程序)中 定义事件调度器 App.Dispatcher = _.clone(Backbone.Events); 在view2中,您不想访问view1的组合框。我不确定您想在这里做什么,但我假设您希望在view2

我有一个fuelux网格的view1,其中有一个组合框的格式化程序,用于另一列。我还有另一个视图2,其中有菜单。单击view2中的某个按钮/下拉列表,我捕获了一个事件


在view2中,如何访问view1的组合框?你可能猜到了,我对开发非常陌生。

这是我一直使用的模式:

在全局命名空间(应用程序)中 定义事件调度器

App.Dispatcher = _.clone(Backbone.Events);
在view2中,您不想访问view1的组合框。我不确定您想在这里做什么,但我假设您希望在view2中单击按钮/下拉列表时,组合框会发生一些事情

因此,要做到这一点,在您的视图2中

view2 = Backbone.View.extend({
  //other view stuff
  events: {
    'click button': 'onClickButton'
  },

  onClickButton: function() {
    App.Dispatcher.trigger('buttonClicked', [event params you wanna pass]);
  }
});
在视图1中

 view1 = Backbone.View.extend({
  //other view stuff

  initialize: function() {
    //other view initialize suff
    App.Dispatcher.on('buttonClicked', this.handleButtionClicked, this);
  },

   handleButtionClicked: function() {
     //do stuff to combo boxes
   }
});

基本上,当您单击view2中的按钮时,view2会通过全局App.Dispatcher通知此事件。view1在App.Dispatcher上订阅了这个事件,当它被触发时,view1应该知道如何处理它。

我刚刚经历了-。选择2更好吗?或者木偶会更好地处理它吗?太好了!使用全局事件处理程序进行视图间事件通信听起来很不错。我以前应该解释过-但我真正想要的是-因为view1在网格中有组合框,所以可以在view1网格中选择多个组合框。现在view2是菜单视图,它有一个下拉/按钮-单击该按钮时-需要知道在view2中选择了哪些所有组合框。这是我必须创建全局变量并在view1组合选择中找到push并在view1中访问它的东西。我真的不喜欢全局池机制。应该有一些优雅的方法。谢谢你的帮助!我懂了。我看不到你的应用程序,所以我真的不知道将它们放在两个不同视图中的设计决策是否正确。但在您的情况下,我将创建一个模型(主干模型)来维护组合框的状态,并将其传递给两个视图。当view1中的任何组合框发生更改时,更新模型上的属性;在view2中,单击按钮时,读取模型中的属性以决定需要执行的操作。谢谢Yurui!我会尝试一下,并将此信息发布。