Javascript-форум (https://javascript.ru/forum/)
-   Библиотеки/Тулкиты/Фреймворки (https://javascript.ru/forum/library-toolkit-framework/)
-   -   Динамическое делегирование событий в backbone (https://javascript.ru/forum/library-toolkit-framework/33142-dinamicheskoe-delegirovanie-sobytijj-v-backbone.html)

ssnikolay 12.11.2012 00:23

Динамическое делегирование событий в backbone
 
Пассаны, есть какой в backbone (backbone-on-rails даже) трюк, что бы при описывании в хеше events, можно было бы туда что то типа
events:
    'live click :input': 'updateWidth'

засунуть?
Ну или какой другой способ навесить динамический обработчик...

Dmitriyff 12.11.2012 04:13

так там и так вроде все события как live обрабатываются, то бишь через всплытие, в чем у вас имено проблема?

ssnikolay 12.11.2012 19:50

Смотри, есть сторонний "плагин", в коем имеет место код
$('<a href="#" class="remove">CLOSE</a>').mousedown(function (e) {
                    e.stopPropagation();
                }).click(function () {
					$column = $(this).parent().parent().parent();
					count = $column.find(".widget").size();
					if(count == 1){
						if(confirm('Delete oblast?')){
							$(this).parents(settings.widgetSelector).animate({
								opacity: 0
							},function () {
								$(this).wrap('<div/>').parent().slideUp(function () {
									$(this).remove();
								});
							});
						}

						//asd
					}

И моя въюшка
class Sv.Views.AppsApp extends Backbone.View
  el: 'body'

  events:
    'click .remove: 'deleteWidget'


  deleteWidget:(event) ->
    alert('sddsd')


При этом, при нажатии на a.remove ни какой реакции не просходит...НО если я раскоммент. //asd (просто вызову ошибку, которая не повлияет на скрипт плагина и лишь будет видна в faerbug) то странным образом событие сработает...

ssnikolay 12.11.2012 20:45

Udt: вопрос снят) там ниже, в функции клика было return false, что естественно для функций кликов по ссылкам на jQ, но именно это и не давало отработать view'шки моей))
убрал, и заменил ссылку на div))
Хотя фундаментально не понятно почему именно все так было оО

Dmitriyff 13.11.2012 10:47

хм... да возможно, очередь разрывалась, хм... надо будет почитать, как вариант есть событие event.preventDefault(). которое позволяет прервать переход по ссылке и продолжить выполнять код обработчика, попробуй с ним, очередь обработчиков скорей всего не пострадает


Часовой пояс GMT +3, время: 14:14.