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
Backbone.js 木偶触发法与listenTo_Backbone.js_Triggers_Marionette - Fatal编程技术网

Backbone.js 木偶触发法与listenTo

Backbone.js 木偶触发法与listenTo,backbone.js,triggers,marionette,Backbone.js,Triggers,Marionette,我有两个项目视图 第一个视图应该触发事件,第二个视图应该侦听触发器。我该怎么做呢 以下是我目前掌握的情况: Branch.RecipeView = Marionette.ItemView.extend({ triggers: { 'change': 'recipe:selected' } }); 第二种观点如下: Branch.MetaDataView = Marionette.ItemView.extend({ template: _.temp

我有两个项目视图

第一个视图应该触发事件,第二个视图应该侦听触发器。我该怎么做呢

以下是我目前掌握的情况:

  Branch.RecipeView = Marionette.ItemView.extend({
    triggers: {
      'change': 'recipe:selected'
    }
  });
第二种观点如下:

  Branch.MetaDataView = Marionette.ItemView.extend({
    template: _.template(
      '<div id="branchImgSrc">' +
       '</div>' 
    ),
  initialize: function () {
    this.on('recipe:selected', function () {
       console.log('selected');
    });
  }
});
Branch.MetaDataView=marionete.ItemView.extend({
模板:\ u0.template(
'' +
'' 
),
初始化:函数(){
this.on('recipe:selected',函数(){
console.log('selected');
});
}
});
我实例化了这两个视图并将它们添加到布局中,但ItemView one中的事件从未触发配方:ItemView 2中的selected


我是不是想错了

问题的答案取决于您是否希望
Branch.MetaDataView
存储对
Branch.RecipeView
的引用,而不是使用一些外部机制进行事件消息传递

  • 如果您不介意引用Branch.RecipeView,您可以使用以下工具获取所需内容:

  • 尝试使用这个.listenTo(Branch.RecipeView,'recipe:selected',函数(){console.log('selected');});
    recipeView = new Branch.RecipeView();
    
    Branch.MetaDataView = Marionette.ItemView.extend({
      template: _.template(
        '<div id="branchImgSrc">' +
         '</div>' 
      ),
      initialize: function () {
        this.listenTo(recipeView, 'recipe:selected', function () {
          console.log('selected');
        });
      }
    });
    
    // Create a message bus
    var myBus = _.extend({}, Backbone.Events);
    
    // Listen in on the message bus
    this.listenTo(myBus, 'some:event', myCallback);
    
    // Trigger an event on the bus
    myBus.trigger('some:event');