2009-08-19 47 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

将多个衬管放在一起并不是一个好主意。很难阅读,很难调试。 为了使内联代码更易于阅读,请将其放在大括号内,并将其写入多行。