骨干访问其他视图的数据/事件

时间:2013-11-23 13:34:28

标签: backbone.js backbone-views

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

在view2中,我们如何访问view1的组合框?你可能已经猜到了,我对发展很陌生。

1 个答案:

答案 0 :(得分:0)

这是我一直在使用的模式:

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

App.Dispatcher = _.clone(Backbone.Events);

在view2中,您不想访问view1的组合框。我不确定你想在这里做什么,但我假设你想在视图2中点击按钮/下拉列表时想要用组合框发生一些事情。

所以,在你的视图2中这样做。

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

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

并在view1中。

 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应该知道如何处理它。