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

0

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

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 click someFormButton.

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

Теги:
canjs

1 ответ

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);
    }    
})

Ещё вопросы

Сообщество Overcoder
Наверх
Меню