zombie.js browser.fire не работает с Backbone.Events - PullRequest
4 голосов
/ 02 октября 2011

Кажется, что метод browser.fire не вызывает обработчики событий, подключенные через Backbone.Events.(он отлично работает в других случаях, например при щелчке по тегам / кнопкам привязки)

См. этот список тестовых примеров на сайте documentClouds: https://gist.github.com/1256944

Если первое, что вы делаете при переходеURL-адрес - нажмите кнопку «Открыть», вы получите предупреждение, но также к классу тела добавлен класс «оверлей» - это то, что я проверяю.

Из теста видно, что при использованииbrowser.fire 'click', подсказка не отображается, а класс оверлеев не виден.

Однако при запуске события click с помощью метода click () jQuery (через browser.evaluate), затемкласс оверлея виден ...

1 Ответ

0 голосов
/ 07 августа 2012

В своем виде основы вы должны добавить свойство 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());
  }

});
...