2012-02-15 15 views
0

私は変数にイベントリスナーを付ける方法を知っています...それは超奇妙なので、ここで私が働いているのが分かりますね。そのように私はcoolImage.bind(「B.viewController」、コールバック)のような何かをするためにこれを使用することができます例えばので、私はイベントリスナーとしてそれを添付することができるようにvaluechange events in javascript?

B.viewController = function() { 
    var view = 'large'; 

    var update = function() { 
    if($(window).width() >= 481) { 
     var new-view = 'large'; 
     return view == new-view 
    } else { 
     var new-view = 'mobile'; 
     return view == new-view; 
    } 
    } 

    update(); 

    $(window).resize(function() { 
    update(); 
    }); 
}; 

今私はこれを拡張したいのですがビューが変更された場合、サイズ変更リスナをウィンドウにアタッチする必要なしにコールバックが呼び出されます。

+1

スーパー奇妙に聞こえます... = ) – gdoron

+2

変数名にダッシュを使用することはできません! – ThiefMaster

答えて

0

ジョブを実行するカスタムイベントが必要な場合があります。ここ

は一例であり:

var Publisher = {}, Subscriber = {}, EVENT_NAME = 'publisher.updated', 
    PubSub = $({}); 

Publisher.update = function() { 
    PubSub.trigger(EVENT_NAME); 
}; 

Subscriber.onUpdate = function() { 
    alert('Received update!'); 
}; 

PubSub.bind(EVENT_NAME, Subscriber.onUpdate); 
Publisher.update(); 

パブリッシャは更新が呼び出されるイベントをトリガし、イベントがトリガされたときに、加入者は、イベントをリッスン。

これをケースに適用すると、B.viewControllerが更新されると、PubSub.trigger('view.updated')に電話して更新イベントをトリガーできます。そして、にイベントを聞かせてください。

クレジット/リファレンス

PubSubのコードの
+0

「Javascriptイベントメカニズム」のようなものはありません。あなたのコードでは、jQueryの 'trigger'関数と' bind'関数をいくつかのカスタムメッセージと共に使用しています。 @JulianD。 –

+0

- ありがとう。私はそれを反映するために自分の投稿を更新します。 – DashK

0

大きなリスナークラスを作成します。それは要素に自身を束縛する機能を持っています。この関数は、onload,onclickなどのすべての要素のイベントのコールバック関数としてリスナーの内部メソッドをバインドします。次に、リスナーの内部メソッドに実際の関数を割り当てるさまざまなリスナーのリスナーをインスタンス化します。もう1つのオプションは、すべてのイベントを単一のコールバック関数にバインドすることです。このコールバック関数は、単一のパラメータ、つまりイベントの説明を取得します。私が正しくリコールした場合、IEは必ずそのパラメータを送信するとは限りません - もしそうなら、window.eventを見てください。この機能では、実行されたすべてのイベントを処理します。また、どのイベントが発生したかを識別したい場合は、そのイベントの詳細を保持しているオブジェクトのタイプによって行うことができます。

変数のイベントについて:私はこのようなことに遭遇していません。それはほとんどのプログラミング言語では存在せず、私はそれがjavascriptに存在するとは思わない。私は良い古いOOPの習慣 - ゲッターとセッターを使うことをお勧めします。したがってa.xの代わりにa = xa.getX()の代わりにa.set(x)と書きます。これらの方法では、必要に応じて変更を処理できます。