Разве Backbone.js и пользовательский виджет jQuery-UI не могут жить в мире? - PullRequest
4 голосов
/ 19 февраля 2011

Я ищу способ использовать в моем проекте как пользовательские виджеты jQuery (для инкапсуляции моих компонентов пользовательского интерфейса, так и внутренние состояния и пользовательские события, предназначенные для использования во внешней DOM), а также замечательную инфраструктуру "Backbone.js".Одна из основных проблем, с которой я сразу же наткнулся, заключается в том, что если я связываю обработчики событий с корневым элементом моего виджета (для управления поведением ВНУТРЕННЕГО виджета), а затем устанавливаю тот же элемент, что и корневой элемент для представления Backbone, Backbone автоматически отсоединяет ВСЕ существующие ранее события (устанавливаемые моим виджетом) и заменяющие их обработчиками событий, указанными в хэше «событий» представления.

Итак, если я установлю следующие обработчики событий в объявлении моего виджета:

var el = this.element;
el.bind("mouseenter", function (e) { el.css("backgroundImage", "url(over.png)").addClass("selected"); }).bind("mouseleave", function (e) { el.css("backgroundImage", "").removeClass("selected"); });

А затем создать экземпляр моего представления backbone.js:

// "Participant"'s render() creates a DIV and initializes my widget on it   
var userView = new this.Views.Participant({ model: user });
$("#somediv").append(userView.render().el);

Мои обработчики событий мыши перестают отвечать!Есть ли способ заставить Backbone управлять своими собственными обработчиками, не затрагивая других?

1 Ответ

1 голос
/ 07 апреля 2011

Эта проблема решена в разрабатываемой версии backbone.js (текущая стабильная версия 3.3 по-прежнему содержит эту «ошибку»). Вы можете использовать снимок с https://github.com/documentcloud/backbone.

...