2012-05-01 5 views

答えて

3

カスタムイベントは、グローバルである必要はありません。コントローラインスタンスごとにイベントをトリガ/バインドできますが、コントローラクラスごとにイベントをバインドすることはできません。インスタンス

class PresenterController extends Spine.Controller 
    giveSpeech: (message) -> 
    @trigger("speech",message) 

class App extends Spine.Controller 
    addKeynote: -> 
    @speaker = new PresenterController 
    @speaker.bind("speech",@listen) 
    listen: (message) => 
    alert("I heard " + message) 

ためしかし、あなたはPresenterController.bind(「スピーチ」)のようなものを得ることができません

理由は、モデルがクラスにメソッドを追加した、@extend Eventを使用しますが、コントローラは@include Eventを使用していることですこのメソッドは、インスタンスにメソッドを追加します。モデルはトリガー、バインド、アンバインドの独自の実装を定義しているため、インスタンス・バインディングの外観を実現します

1

あなたはあなたではこの

Spine.trigger "Create" 

のように背骨でイベントをトリガすることができますが、他のコントローラだあなたはあなたが持つメソッドを定義する必要があり、この

Spine.bind "Create", @create 

のようなメソッドにイベントをバインドすることができますこのコントローラーで作成する名前:

カスタムイベントはグローバルなので、コントローラー名をプレフィックスとして使用します。 あなたはコントローラ名を使用することができます。例えば作成します。

Spine.trigger "ControllerName:Create"