【问题标题】:zombie.js browser.fire not working with Backbone.Events僵尸.js browser.fire 不能与 Backbone.Events 一起使用
【发布时间】:2023-03-07 17:45:01
【问题描述】:

browser.fire 方法似乎不会触发通过 Backbone.Events 附加的事件处理程序。 (它适用于其他情况,例如单击锚标签/按钮)

有关 documentClouds 站点上的测试用例,请参阅此要点: https://gist.github.com/1256944

如果您在访问 url 时做的第一件事是单击“打开”按钮,您会收到警报,而且“覆盖”类也会添加到 body 元素中 - 这就是我要检查的内容。

从测试中可以看出,在使用browser.fire 'click'时,没有显示提示,也没有看到overlay类。

但是,当使用 jQuery 的 click() 方法(通过 browser.evaluate)触发点击事件时,会看到覆盖类...

【问题讨论】:

  • 定义“通过 Backbone.Events 附加的事件处理程序”。
  • 例如"click .somediv": "onClick" 通常放在视图中
  • 您能否包含与此 Backbone 视图关联的 html 视图。通常主干事件的问题是目标类在 DOM 中不存在。如果#open_viewers 不在#toolbar 内,它就不起作用。
  • 不,不幸的是,事情没有那么简单。由于这个错误和其他不断出现的错误,我前一段时间离开了僵尸。我当时在项目github上发布了这个问题,其他人也报告了同样的问题:github.com/assaf/zombie/issues/181

标签: jquery backbone.js zombie.js


【解决方案1】:

在您的主干视图中,您应该添加 el 属性。指定应绑定事件的元素。例如:

dc.ui.Toolbar = Backbone.View.extend({

  id : 'toolbar',

  el : "body",

  events : {
    'click #open_viewers' : '_clickOpenViewers',
    'click #size_toggle'  : '_toggleSize'
  },

  _clickOpenViewers : function() {
    this.openViewers();
  },

  openViewers : function(checkEdit, suffix, afterLoad) {
    if (!Documents.selectedCount) return dc.ui.Dialog.alert('Please select a document to open.');
    var continuation = function(docs) {
      _.each(docs, function(doc){
        var win = doc.openAppropriateVersion(suffix);
        if (afterLoad) {
          win.DV || (win.DV = {});
          win.DV.afterLoad = afterLoad;
        }
      });
    };
    checkEdit ? this.edit(continuation) : continuation(Documents.selected());
  }

});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-12-08
    • 2011-09-09
    • 2012-03-11
    • 1970-01-01
    • 1970-01-01
    • 2011-09-14
    • 2015-04-28
    相关资源
    最近更新 更多