В контроллере 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 в текущий объект опций
Является ли добавление обработчика кликов в другом обработчике, что вы действительно хотите сделать? Ваш код будет означать, что новый обработчик кликов будет добавлен в #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);
}
})