我有一个ItemView,然后我将throw .trigger()发送到另一个控制器
消息视图
Bintime.module("Message.Input", function(Input, Bintime, Backbone, Marionette, $, _) {
Input.Contacts = Marionette.ItemView.extend ({
template: "#new",
events: {
"change input#message-input": "sendInput"
},
sendInput: function(e){
e.preventDefault();
var message = this.$("input#message-input").val();
this.model.get("messages").push({
to: "1",
message: message
});
this.render();
this.trigger("chat:contacts", this.model);
}
});
});
消息控制器
Bintime.module("Message.Input", function(Input, Bintime, Backbone, Marionette, $, _) {
Input.Controller = {
messageField: function(model){
var contacts = new Input.Contacts({
model: model
});
contacts.on("childview:chat:contacts", function(childView, model) {
Bintime.Contacts.Messages.Controller.chatMessages(model);
});
Bintime.regions.input.show(contacts);
}
}
});
这是聊天控制器
Bintime.module("Contacts.Messages", function(Messages, Bintime, Backbone, Marionette, $, _) {
Messages.Controller = {
chatMessages: function(model){
var contacts = new Messages.Contact({
model: model
});
Marionette.Renderer.render("#message", model);
Bintime.regions.messages.show(contacts);
}
}
});
一切都是真的,并且应该使用Marionette.Renderer.render("#message", model);
或者我应该使用另一种方法来处理它?</ p>
答案 0 :(得分:0)
我并非100%确定您使用渲染器做了什么,但有一个问题是您的ItemView
不会使用"childview:"
将其事件作为前缀,以便绑定应该看起来更像contacts.on("chat:contacts"
也代替Bintime.Contacts.Messages.Controller.chatMessages(model);你可能会抛出另一个模块可以收听的Wreqr / Radio事件..但我认为这里最大的问题是&#34; childview:chat:contacts&#34;不是一个被抛出的事件。