2

Spine Controllerを作成しましたが、そのメソッドの1つからカスタムイベント「Create」をトリガーしたいと思います。次に、別のSpineControllerにそのイベントをリッスンしてもらいたいと思います。これは、Spine.jsのカスタムイベントメソッドを使用してどのように可能ですか?

4

2 に答える 2

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( "speech")のようなものを取得することはできません

その理由は、Modelはクラス@extend Eventにメソッドを追加するを使用しますが、Controllerはインスタンスにメソッドを追加するを使用するためです。モデルは、トリガー、バインド、およびバインド解除の独自の実装を定義するため、インスタンスバインディングを持っているように見えます。@include Event

于 2012-06-03T02:52:46.567 に答える
1

このようにSpineでイベントをトリガーできます

Spine.trigger "Create"

あなたが他のコントローラーである場合、このようなメソッドにイベントをバインドできます

Spine.bind "Create", @create

このコントローラーでcreateという名前のメソッドを定義する必要があります。

create: =>
  # Create action

カスタムイベントはグローバルであるため、コントローラー名をプレフィックスとして使用することをお勧めします。次のように、ControllerName:Createを使用できます。

Spine.trigger "ControllerName:Create"
于 2012-05-08T10:36:52.233 に答える