私は2つのアプリを持っています:
SrvLinkApp
リンク モデル (sockjs
サーバーへの接続) を持つ。ビュー、モデル、およびChatApp
を持つ。chatView
ChatEntry
ChatCollection
サーバーから msg を受信すると、次のように「chat:server:message」ペイロード イベントをトリガーします。
App.vent.trigger('chat:server:message', payload)
私ChatApp
はこのイベントをリッスンし、ペイロードを に変換してから、によって参照されるウィッチChatEntry
に追加します。ChatCollection
ChatView
バインディングはどこに追加すればよいですか? 初期化部分にはコレクションへの参照しかありません。
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);
});
});
または、コレクションにアクセスする他の方法はありますか?