Передача данных из дочернего клика в родительский обратный вызов события в CanJS

В контроллере CanJS я использую событие click внутри другого обработчика кликов. Как я могу передать некоторые данные родительскому обработчику из дочернего обработчика

someController=can.Control({
    init:function(element,options){
    //  some code
    },
    '.someButtonSelector click':function(el,ev)
    {
        console.log(this.options.someData) //Returns array of objects
        ev.preventDefault();
        $('#someFormButton').click(function()
        {
            var formData=can.deparam($('someFormSelector').serialize());
            //Want to add formObject in this.options.someData array

        })
    },      
})

Я хочу поместить formData в this.options. Вот this представляет собой объект someController поэтому я не могу использовать его непосредственно внутри someFormButton событие клика.

Также хотите знать, придерживаюсь ли я правильного подхода? Сценарий на нажатие someButtonSelector форма появляется. Я хочу поместить formData в текущий объект параметров

1 ответ

Решение

Является ли добавление обработчика кликов в другой обработчик тем, что вы действительно хотите сделать? Ваш код будет означать, что новый обработчик кликов будет добавлен в #someFormButton каждый раз, когда кто-то нажимает на .someButtonSelector, Если #someFormButton также находится внутри элемента Controls, я думаю, что вы хотели бы сделать (добавление сериализованных данных в this.options.formData при нажатии #someFormButton) должно выглядеть примерно так:

var someController = can.Control({
    init:function(element,options){
    //  some code
    },

    '.someButtonSelector click':function(el,ev)
    {
        console.log(this.options.someData) //Returns array of objects
        ev.preventDefault();
    },  

    '#someFormButton click': function(el, ev) {
        var formData = can.deparam($('someFormSelector').serialize());
        this.options.formData.push(formData);
    }    
})
Другие вопросы по тегам