0

私は2つのアプリを持っています:

SrvLinkAppリンク モデル (sockjsサーバーへの接続) を持つ。ビュー、モデル、およびChatAppを持つ。chatViewChatEntryChatCollection

サーバーから msg を受信すると、次のように「chat:server:message」ペイロード イベントをトリガーします。

App.vent.trigger('chat:server:message', payload)

ChatAppはこのイベントをリッスンし、ペイロードを に変換してから、によって参照されるウィッチChatEntryに追加します。ChatCollectionChatView

バインディングはどこに追加すればよいですか? 初期化部分にはコレクションへの参照しかありません。

App.vent.bind("chat:server:msg", function(msg) {})

プランA

Foo.module("ChatApp", function(ChatApp, App, Backbone, Marionette, $, _) {

App.addRegions({
    chatRegion: "#chat-region",
});


MsgEntry = Backbone.Model.extend({});


MsgCollection = Backbone.Collection.extend({
    model: MsgEntry
})


MsgView = Backbone.Marionette.ItemView.extend({
    template: '#chat-entry-template',
});

MsgListView = Backbone.Marionette.CompositeView.extend({

    itemView: MsgView,

    itemViewContainer: "#chat-messages",

    template: "#chat",

     ....
});


ChatApp.addInitializer(function() {

   var msgCollection = new MsgCollection();
   var msgListView = new MsgListView({collection: msgCollection});

   // render and display the view
   App.chatRegion.show(msgListView);


   // App Events listeners
   // --------------------

   // New chat message from server 
    App.vent.bind("chat:server:msg", function(msg) {
        // create an entry and add it to our collection
        console.log(msgCollection);
    });


});
});

またはプランB

Foo.module("ChatApp", function(ChatApp, App, Backbone, Marionette, $, _) {

App.addRegions({
    chatRegion: "#chat-region",
});


// App Events listeners
// --------------------

// New chat message from server 
App.vent.bind("chat:server:msg", function(msg) {
   // create an entry and add it to our collection
   console.log(ChatApp.msgCollection);
});


MsgEntry = Backbone.Model.extend({});


MsgCollection = Backbone.Collection.extend({
    model: MsgEntry
})


MsgView = Backbone.Marionette.ItemView.extend({
    template: '#chat-entry-template',
});

MsgListView = Backbone.Marionette.CompositeView.extend({

    itemView: MsgView,

    itemViewContainer: "#chat-messages",

    template: "#chat",

     ....
});


ChatApp.addInitializer(function() {

   var msgCollection = new MsgCollection();
   var msgListView = new MsgListView({collection: msgCollection});

   // HERE //
   ChatApp.msgCollection = msgCollection;
   // END HERE //

   App.chatRegion.show(msgListView);
});
});

または、コレクションにアクセスする他の方法はありますか?

4

1 に答える 1