Передача данных из дочернего клика в родительский обратный вызов события в 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);
}
})