zombie.js browser.fire无法使用Backbone.Events

时间:2011-10-02 03:16:55

标签: jquery backbone.js zombie.js

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

在documentClouds网站上查看测试用例: https://gist.github.com/1256944

如果你去网址时做的第一件事就是点击“打开”按钮,你会收到一个警告,但是'overlay'类也被添加到body元素中 - 这就是我要检查的内容。

您可以从测试中看到,当使用browser.fire“点击”时,未显示提示,并且看不到叠加层。

但是,当使用jQuery的click()方法(通过browser.evaluate)触发click事件时,可以看到overlay类......

1 个答案:

答案 0 :(得分:0)

在骨干视图中,您应该添加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());
  }

});