2014-01-21 5 views
0

Я использую Mootools и у меня есть два класса (Class1, class2), class2 используются в class1создать слушатель между объектами Javascript

class2 получить два метода (func1, func2)

func1 используются для отображать элементы и является вызовом в классе1

func2 используется, чтобы щелкнуть один из отображаемых элементов func1.

Я хотел бы получить событие в классе1, если вызвано func2, но я не знаю, как это сделать.

Благодарим за помощь.

Edit: некоторые пример кода

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 
    } 

} 
+0

Очень сложно знать, как помочь вам скорректировать код, если вы его не разместили. Можете ли вы добавить короткий код проблемного кода и сказать, какие строки работают не так, как вы хотите? –

+0

Я добавляю немного кода для объяснения, я хотел бы знать, как вызвать мой обратный вызов в onElementsHide, когда finch называется – Ajouve

+0

, просто поместите «this.onElementsHide()» внутри this.func2() и «callback()» внутри this.onElementsHide(). – dandavis

ответ

1

Посмотрите на MDN's article о создании и запуске событий

В принципе сделать что-то вроде следующего:

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

}  
1

Вы имеете в виду это?

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 
    } 

} 
+0

В этом случае обратный вызов будет выполняться непосредственно после использования onElementsHide, я хочу вызвать мой обратный вызов когда func2 исполняется – Ajouve

+0

Я его отредактировал, это то, чем вы были? –

Смежные вопросы