Extjs4 ExtJS操作在哪里适合MVC模式

Extjs4 ExtJS操作在哪里适合MVC模式,extjs4,extjs-mvc,Extjs4,Extjs Mvc,我非常喜欢ExtJS动作的概念。我看了看,它(几乎)正是我所需要的。唯一的问题是我正在尝试使用MVC模式。 我有: 发票列表(视图) Inovice(控制器) 发票(型号) 发票(商店) 我在哪里以及如何定义行动?他们应该在控制器中吗?如何调用它们并引用它们?我需要几个动作,它们将出现在上下文菜单和发票列表工具栏的菜单中。问得好。通过某种方式将视图和控制器范例结合在一起,操作似乎打破了MVC模式。因为它们有处理程序,所以它们带有功能以及文本和图标等UI元素。然而,它们不是组件——从ExtJS

我非常喜欢ExtJS动作的概念。我看了看,它(几乎)正是我所需要的。唯一的问题是我正在尝试使用MVC模式。 我有:

  • 发票列表(视图)
  • Inovice(控制器)
  • 发票(型号)
  • 发票(商店)

我在哪里以及如何定义行动?他们应该在控制器中吗?如何调用它们并引用它们?我需要几个动作,它们将出现在上下文菜单和发票列表工具栏的菜单中。

问得好。通过某种方式将视图和控制器范例结合在一起,操作似乎打破了MVC模式。因为它们有处理程序,所以它们带有功能以及文本和图标等UI元素。然而,它们不是组件——从ExtJS的意义上来说。因此,不能使用选择器将其作为目标

最好的方法是将它们看作配置对象。不多也不少。配置对象本身是无意义的,并且不能作为目标。行动也是如此。例如,它们实际上可以用作按钮的配置对象

现在他们应该去哪里?我想答案真的取决于你这个设计师。因为它们不符合严格的MVC模式,所以您需要根据您需要的特定操作的可访问范围来做出决定。对于许多视图共享的真正全局操作,您甚至可以将其放在应用程序配置中:例如,MyApp.app.actions[“delete”]。 如果控制器将配置多个视图并将它们与存储连接在一起,那么控制器可能是放置它的好地方。它们可能会将多个视图与共享操作连接起来


希望这有帮助。祝你好运:)

只要做一个
someview.firevent('Yourcustomevent')

谢谢。我目前正在尝试创建一些将在一个视图中使用的操作。它是一个带有工具栏和网格的窗口。当用户右键单击网格行时,操作将出现在工具栏子菜单和关联菜单中。对于这个场景,我认为我应该把它放在这个窗口的控制器中,对吗?怎么用?我过去常常将事件从控制器连接到视图,但不知道如何在UI中插入对象。然后我要做的是在视图类中创建动作,并让动作处理程序触发一些自定义事件。在控制器类中,您可以侦听从视图发出的自定义事件。非常感谢用于从操作触发自定义事件的代码段。正如下面的其他答案中所述,自定义事件的触发方式如下::someview.fireEvent('Yourcustomevent',someData');