繁体   English   中英

在对象javascript之间创建监听器

[英]create listener between objects javascript

我正在使用Mootools,我有两个类(class1,class2),class2在class1中使用

class2有两个方法(func1,func2)

func1用于显示元素,并在class1中调用

func2用于点击func1显示的元素之一。

如果调用了func2,我想在class1中获取一个事件,但我不知道如何。

谢谢你的帮助。

编辑:一些代码示例

var Class1 = function(){
    var class2 = new Class2();
    class2.func1();
    class2.onElementsHide(function(){
        alert('elements are invisibles !!')
    });
}

var Class2 = function(){
    this.func1 = function(){
        //show elements
        elementOnClick(this.func2)
    }

    this.func2 = function(){
        //hide elements
    }

    this.onElementsHide = function(callback){
        //trigger callback when func2 is used
    }

} 

看一下MDN关于创建和触发事件的文章

基本上做以下事情:

var Class1 = function(){
    var class2 = new Class2();
    class2.func1();
    class2.onElementsHidden(function(){
        alert('elements are invisibles !!')
    });
}

var Class2 = function(){

    //Create a custom event
    var ElementsHiddenEvent = new Event("ElementsHidden");

    this.func1 = function(){
        //show elements
        elementOnClick(this.func2)
    }

    this.func2 = function(){
        //hide elements
        //Dispatch the event
        document.dispatchEvent(ElementsHiddenEvent);
    }

    //Sets a listener for the event
    this.onElementsHidden = function(callback){
       //make sure the callback is a function
       if(typeof(callback)!=="function") return;
       //Set a listener for the custom event, and set it to execute callback
       document.addEventListener("ElementsHidden",callback);
    }

}    

你是这个意思?

var Class1 = function(){
    var class2 = new Class2();
    class2.func1();
    class2.onElementsHide(function(){
        alert('elements are invisibles !!')
    });
}

var Class2 = function(){

    this.cb = function(){};

    this.func1 = function(){
        //show elements
        elementOnClick(this.func2)
    }

    this.func2 = function(){
        //hide elements
        this.cb(); //<<Added
    }

    this.onElementsHide = function(callback){
        //trigger callback when func2 is used
        this.cb = callback; /// <<Added
    }

} 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM