14

我正在使用backbone.js 作为MVC 框架编写一个选项卡菜单组件。当用户单击选项卡时,组件将切换选项卡(内部操作),但随后我希望组件的侦听器响应与事件关联的操作。这背后的想法是我将各种点击抽象为特定的动作。例如,每个选项卡的模型是具有以下结构的哈希:

{
    label : <string>,
    actionCommand : "save",
    tabClass : <string>
}

将触发的事件将被称为“动作”,因此侦听器将响应“动作”,但随后将转发特定命令。例如:

this.trigger("action", {actionCommand: "save"});

侦听器将依次处理事件,如下所示:

handleAction : function(event) {
  if (event.actionCommand == "save") {
    ...do something...
  }

}

这可能吗?我无法从文档中收集到这一点。提前感谢您提供的任何见解。

4

1 回答 1

30

是的,Backbone 可以做到这一点。

您可以使用事件模块来允许对象绑定和触发自定义命名事件。

在您的情况下,您可能希望将事件模块添加到您的菜单组件对象中。如果这个对象是一个主干模型,那么它已经有事件模块。如果没有,那么您可以使用以下代码添加它

_.extend(MenuComponent, Backbone.Events);

然后你的听众可以像这样订阅

MenuComponent.bind("action", this.handleAction, this);

你可以像你已经提到的那样触发事件

this.trigger("action", {actionCommand: "save"});
于 2011-12-23T20:55:04.807 回答