14

私はbackbone.jsをMVCフレームワークとして使用してタブメニューコンポーネントを作成しています。ユーザーがタブをクリックすると、コンポーネントはタブを切り替えます(内部操作)が、コンポーネントのリスナーがイベントに関連付けられたアクションに応答するようにします。この背後にある考え方は、さまざまなクリックを特定のアクションに抽象化することです。たとえば、各タブのモデルは、次の構造のハッシュです。

{
    label : <string>,
    actionCommand : "save",
    tabClass : <string>
}

トリガーされるイベントは「アクション」と呼ばれるため、リスナーは「アクション」に応答しますが、特定のコマンドを転送します。例えば:

this.trigger("action", {actionCommand: "save"});

次に、リスナーは次のようにイベントを処理します。

handleAction : function(event) {
  if (event.actionCommand == "save") {
    ...do something...
  }

}

これは可能ですか?ドキュメントからこれを収集することはできませんでした。あなたが提供できる洞察を事前に感謝します。

4

1 に答える 1

30

はい、それはバックボーンで可能です。

イベントモジュールを使用して、オブジェクトがカスタムの名前付きイベントをバインドおよびトリガーできるようにすることができます。

あなたの場合、Eventsモジュールをメニューコンポーネントオブジェクトに追加したいと思うでしょう。このオブジェクトがバックボーンモデルの場合、すでにイベントモジュールがあります。そうでない場合は、次のコードで追加できます

_.extend(MenuComponent, Backbone.Events);

次に、リスナーはこのようにサブスクライブできます

MenuComponent.bind("action", this.handleAction, this);

そして、あなたはすでに述べたようにイベントをトリガーすることができます

this.trigger("action", {actionCommand: "save"});
于 2011-12-23T20:55:04.807 に答える