私はSpine Controllerを作成しました。カスタムイベント「作成」をそのメソッドの中からトリガーしたいと思います。 それから私は別のSpine Controllerにそのイベントを聞きたいと思います。 Spine.jsのカスタムイベントメソッドを使用するとどうなりますか?Spine.jsの他のコントローラからカスタムイベントを聴く
2
A
答えて
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"