0

在 CanJS 控制器中,我在另一个单击处理程序中使用单击事件。如何将一些数据从子处理程序传递给父处理程序

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 放入当前选项对象

4

1 回答 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);
    }    
})
于 2014-05-10T23:13:22.207 回答