【问题标题】:Pass data from child click to parent event callback in CanJS将数据从子点击传递到 CanJS 中的父事件回调
【发布时间】:2014-05-10 20:17:37
【问题描述】:

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

【问题讨论】:

    标签: javascript jquery canjs canjs-control


    【解决方案1】:

    在另一个处理程序中添加点击处理程序是您真正想要做的吗?您的代码将意味着一个新的点击处理程序将被添加到#someFormButton每次有人点击.someButtonSelector。如果 #someFormButton 也在 Controls 元素中,我认为您想要做的(单击 #someFormButton 时将序列化数据添加到 this.options.formData)应该如下所示:

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

    【讨论】:

      猜你喜欢
      • 2020-05-06
      • 2021-06-13
      • 2019-02-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-24
      • 2019-10-13
      相关资源
      最近更新 更多