2009-08-19 48 views
1

應將編程邏輯插入到MXML屬性中嗎?我有幾個按鈕可能會或可能不會根據相關組件的狀態發送事件(例如DataGridList),並且我試圖弄清楚邏輯是否足夠簡單以便簡單地嵌入事件屬性中的一個MXML。Flex MXML屬性應包含多少邏輯?

下面是我怎麼一直在做的事情:

<mx:Script> 
    <![CDATA[ 
     private function sendEvent1():void { 
      if (list.selectedIndex != -1) { 
       dispatchEvent(new Event("click!")); 
      } 
     } 
    ]]> 
</mx:Script> 
<mx:List id="list" dataProvider={listData} /> 
<mx:Button label="Click!" click="sendEvent1()" /> 

在這個例子中,包含在腳本標籤的ActionScript包含邏輯確定事件是否應該出動。

的按鈕,但是,可以修改了一下,去掉了sendEvent1功能的需要:

<mx:Button label="Click!" click="if (list.selectedIndex != -1) dispatchEvent(new Event("click!")" /> 

忽略一些在這些片段中的明顯的問題(例如靜態字符串,缺少代碼數據提供程序等),也有少數的擔憂我有與第二示例:

  • 的MXML小於可讀的(它得到長和雜亂)
  • 作爲多個函數調用所需的點擊按鈕,MXML中的邏輯變得更加笨拙。
  • 在MXML中嵌入邏輯使其不那麼直觀(至少對我而言)。如果我想知道MXML的邏輯,我更傾向於看看Script標籤,我期待ActionScript。

在MXML屬性中插入邏輯後面還有其他優點嗎?我一直在越來越多地看到這種用法,並且我想確保我不會錯過任何令人信服的理由來改變我一直在做的事情。

+1

我與您就您的擔憂達成一致。它們只對從MXML中直接添加事件的邏輯中看到的好處有幫助,可以快速進行原型設計。我喜歡像你一樣閱讀代碼,儘管我希望看到這個函數更好的名字。 ;) – tylermac 2009-08-19 15:29:04

+0

是的,快速鍵入代碼片段通常會導致蹩腳的函數名稱和ID ..真正的代碼有更好的命名約定;)感謝您的想法! – bedwyr 2009-08-19 15:51:10

回答

1

如果代碼長度超過一行,比如提醒或最多可能無條件地設置一個變量,我想不出添加邏輯到MXML代碼的真正好處。想象一下,試圖讀取內聯switch語句。

1

將多個襯管放在一起並不是一個好主意。很難閱讀,很難調試。 爲了使內聯代碼更易於閱讀,請將其放在大括號內,並將其寫入多行。