2012-03-23 78 views
6

我真的很喜欢ExtJS Actions的概念。我看了at this example,它(几乎)正是我需要的。唯一的问题是我试图使用MVC模式。 我:ExtJS Action在哪里适合MVC模式

  • invoicelist(图)
  • Inovice(控制器)
  • 发票(模型)
  • 发票(店)

在哪里,我怎么把定义为行动?他们应该在控制器?如何给他们打电话并参考他们?我需要几个动作,他们将在上下文菜单和invoicelist工具栏的菜单中。

回答

6

好问题。似乎Actions通过将View和Controller范例结合在一起,打破了MVC模式。因为他们具有处理程序,所以它们可以随身携带功能以及文本和图标等UI元素。然而,他们不是组件 - 就ExtJS的意义而言。因此你不能用选择器来定位它们。

想到它们的最佳方式是作为配置对象。没有更多,不少。一个配置对象本身没有意义 - 并且不能被定位。与操作一样。例如,它们实际上可以用作按钮的配置对象。

现在他们应该去哪里?我想这个答案真的取决于你作为设计师。由于他们没有确认严格的MVC模式,因此您可以根据您需要访问的特定操作的范围来作出决定。对于许多视图共享的真正的全局操作,您甚至可以将它放在应用程序配置中:例如MyApp.app.actions [“delete”]。 如果控制器配置多个视图并将它们与商店连接起来,控制器可能是一个很好的放置位置。他们可能通过共享操作连接多个视图。

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

+0

谢谢。我目前正在尝试创建一些将在一个视图中使用的操作。它是带有工具栏和网格的窗口。操作将出现在工具栏子菜单中,并在用户右键单击网格行时出现在上下文菜单中。对于这种情况,我相信我应该把它放在Controller的窗口中,对吧?怎么样?我曾经将事件从控制器连接到视图,但不知道如何在UI中插入对象。 – Milan 2012-03-24 09:31:38

+0

我会做的是在视图类中创建动作,并让动作处理程序触发一些自定义事件。在您的控制器类中,您可以侦听从视图中发出的自定义事件。 – dbrin 2012-03-25 00:23:43

+0

用于从动作引发自定义事件的代码片段将受到高度赞赏。 – Milan 2012-03-26 07:45:52

1

只是做一个someview.fireEvent('Yourcustomevent');