0

次の構造があるとします-

モデル: フォルダー

コレクション: フォルダ

コレクション ビュー内から、特定の名前のフォルダーでイベントをトリガーしたい -

そう、

FolderCollectionView = Backbone.View.extend({
    ...
    ...
    editFolder: function() {
        this.collection.findWhere({ name: "abcd" }).trigger("editThisFolder");
    }
});

FolderModelView = Backbone.View.extend({
   ...
   ...
   editThisFolder: function() {
       //This should get called
   }
});

これは可能ですか?イベントアグリゲーターを使用していますが、特定のフォルダーでイベントをトリガーしたり、フォルダービューをコレクションビューイベントにサブスクライブさせたりする方法が見つかりませんでしたが、すべてのフォルダービューがそのイベントに応答します、特定のフォルダー ビューのみをコレクション イベントに応答させる方法が見つかりませんでした。または、コレクション ビューから特定のフォルダー ビューで何らかの方法でイベントをトリガーします。

私はこれに慣れていないので、何か重要なことを見逃している場合はお知らせください。

イベント アグリゲーター リファレンス - http://lostechies.com/derickbailey/2011/07/19/references-routing-and-the-event-aggregator-coordinating-views-in-backbone-js/

4

1 に答える 1

1

Backbone には依存関係としてunderscore.jsがあります。この理由の 1 つは、Backbone.js コレクションが多数のアンダースコア メソッドを実装しているという事実です。だからあなたのソリューションはうまくいくはずです

this.collection.findWhere({ name: "abcd" }).trigger("editThisFolder");

次に、もちろんFolderView、そのイベントをリッスンして関数を呼び出す必要があります

var FolderView = Backbone.View.extend({
  initialize: function() {
    // assuming a folder model assigned to each view
    this.listenTo(this.model, 'editThisFolder', this.editThisFolder);
  }
});

この回答はお役に立ちましたか?

于 2013-08-22T20:37:51.763 に答える