gpt4 book ai didi

marionette - Backbone Marionette 事件聚合器 : how to listen at the App level to ItemView Event

转载 作者:行者123 更新时间:2023-12-04 18:44:28 25 4
gpt4 key购买 nike

我是 Marionette 的新手,无法理解事件...

我有一个触发事件的 ItemView,我想在应用程序级别接收此事件,但是当我的应用程序监听此事件时,没有任何 react ...

如果事件聚合器在 Application 和 ItemView 中,为什么此代码不起作用? :

var MessageItemView = Backbone.Marionette.ItemView.extend({
template: "#messagesTPL",
tagName: 'tr',
className: 'messageItem',
events : {
'click': 'displayMessage'
},
displayMessage: function () {
this.trigger('display:message');
}
});

App.on('display:message', function () {
console.log('display message !!!');
});

最佳答案

如果要在应用程序级别监听事件,则必须在应用程序级别触发它:

displayMessage: function () {
myApp.trigger('display:message');
}

假设 myApp是您的 Marionette 应用程序。然后,您只需监听该事件:
myApp.on('display:message', ...)

这是实现您所要求的唯一方法:“我有一个触发事件的 ItemView,我希望在应用程序级别接收此事件”。根据您的情况,更好的方法是
  • 按照 Andrew 的建议使用 listenTo(请参阅此处的示例: https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/config/marionette/regions/dialog.js )。在示例中,对话区域监听在 View 上触发的“dialog:close”事件,并对其使用react
  • 使用 Controller 来监听 View 上的事件并做出正确的 react ,你可以在这里看到:https://github.com/davidsulc/marionette-gentle-introduction/blob/master/assets/js/apps/contacts/list/list_controller.js#L38 Controller 对 View 中触发的“contacts:filter”事件使用react,并对其使用react

  • 这两种解决方案都不需要“污染”全局事件空间。

    关于marionette - Backbone Marionette 事件聚合器 : how to listen at the App level to ItemView Event,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17492872/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com