Задать вопрос

Как получить инициатор клика в Backbone.js?

Изучаю бекбон. Пишу тудушку. По ходу возникла потребность получить инициатор клика.
Например: Если я кликнул на .delete-task в 3-ей лишке, то передать конкретно ее в переменную. Каким образом мне это лучше реализовать?

var TaskView = Backbone.View.extend({
        el: '#tasks',
        events: {
            'click > li .delete-task' : 'removeTask',
            'click > li .complete-task' : 'completeTask'
        },
        removeTask : function () {

        },
        completeTask : function () {

        }
    });

Спасибо.
  • Вопрос задан
  • 2509 просмотров
Подписаться 1 Оценить Комментировать
Решения вопроса 1
san4ooo
@san4ooo Автор вопроса
Придумал сам как это дело реализовать. Может кому интересно или искать будет:
var TaskView = Backbone.View.extend({
        el: '#tasks',
        model: Todo,
        events: {
            'click > li .delete-task' : 'removeTask',
            'click > li .complete-task' : 'completeTask'
        },
        removeTask : function (e) {
            console.log($(e.target));
        },
        completeTask : function () {

        }
    });


$(e.target) и есть текущий елемент, по которому кликнули.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
diavol
@diavol
Точнее e.currentTarget. В случае всплытия события e.target может быть не совсем тем, что Вам нужно

javascript.ru/blog/Andrej-Paranichev/Vvedenie-sobytiya
Ответ написан
Комментировать
@movetz
>> Если я кликнул на .delete-task в 3-ей лишке, то передать конкретно ее в переменную.
Хм. Во-первых, для каждой лишки должна создаваться view, с каждой view ассоциируется соответствующая model с соответствующим id. Во-вторых, в этой view все события работают только в рамках $el, события вне твоей view не будут обрабатываться.
В итоге должно быть два view - контейнер для всех тасков и view для одного, и в нем реализовывается удаление подобным образом:
var TaskView = Backbone.View.extend({
        model: Todo,
        events: {
            'click  .delete-task' : 'removeTask'            
        },
        removeTask : function () {
            this.model.destroy();
        }
    });
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы