2012-03-23 77 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');