2010-11-29 8 views
0

開発環境:SDKを使用したHP/Palm WebOS、Eclipse 1.4.5.465、Win7ハウツーカスタムイベントを宣言して聞くには?

私は宣言したい特定の状況下で、イベントを発生させるクラスを持っています。その後、対応するステージのアシスタントがそのイベントを聞き、それが起こったときに何かします。

私はMojo.Event.make、Mojo.Controller.stageController.sendEventToCommanders、Mojo.Event.sendに出くわしました。私が達成しようとしていることに関連していると思いますが、私はこれに特有の例を見つけ出すことができません(宣言、発砲、聞く)。

私が発射したいイベントは、idを持つウィジェットまたはhtmlタグとは関係ありません。

答えて

0

Mojo.Eventは、HTMLドキュメント内のノード/要素であるイベントの発信元に依存します。私が知ることから、DOMコンテキストの外にあるイベント用のライブラリにはビルドされていませんので、この時点で独自に実装する必要があります。あなたの状況は、あなたがちょうどあなたがに耳を傾け、のは、将来の一定の時間を呼び出される関数を格納しているオブジェクトのプロパティを作成して方法を取得することができるかもしれどのように複雑な依存:

ListeningObject = Class.create({ 
    initialize:function(){ 
    // instantiate instance of Subject 
    var subject = new Subject(); 

    // set the onEvent property of subject to an instance of this.onEvent bound to 
    // a this instance of Listening object's context. 
    subject.onEvent = this.onEvent.bind(this); 

    subject.doSomethingAwesome(); 
    }, 
    onEvent:function(){ 
    Mojo.Log.info("This get's called from the object we're listening to"); 
    } 
}); 

Subject = Class.create({ 
    doSomethingAwesome:function(){ 
    // does stuff, maybe an ajax call or whatever 
    // when it's done you can check if onEvent is a function and then 
    // you can call it, we'll use setTimeout to simulate work being done 
    setTimeout((function(){ 
     if(Object.isFunction(this.onEvent)) this.onEvent(); 
    }).bind(this), 200); 
    }, 
    onEvent:null 
}); 

// instantiate an instance of ListeningObject to see it in action 
var listening_object = new ListeningObject; 

このモデルの最大の制限は、特定のイベントをリッスンするオブジェクトを1つだけ持つことができますが、いくつかの状況では必要なことだけです。

関連する問題