是否应将编程逻辑插入MXML属性?我有一些按钮,可能会也可能不会根据相关组件的状态(例如DataGrid
或List
)调度事件,我试图弄清楚逻辑是否足够简单到简单嵌入MXML中的一个Event属性。
以下是我一直在做的事情:
<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()" />
在此示例中,Script标记中包含的ActionScript包含用于确定是否应分派事件的逻辑。
然而,按钮可以稍微修改一下,无需sendEvent1
功能:
<mx:Button label="Click!" click="if (list.selectedIndex != -1) dispatchEvent(new Event("click!")" />
忽略这些片段中的一些明显问题(例如静态字符串,缺少数据提供者的代码等),我对第二个例子有一些顾虑:
Script
标签,我期待ActionScript。在MXML属性中插入逻辑是否还有其他优点?我越来越多地看到这种用法了,我想确保我没有错过任何令人信服的理由来改变我做事的方式。
答案 0 :(得分:1)
如果代码长度超过一行,就像警告或最多可无条件地设置变量一样,我无法想到将逻辑添加到MXML代码中的任何真正好处。想象一下尝试内联读取switch语句。
答案 1 :(得分:1)
将多个内衬放入内联并不是一个好主意。难以阅读,难以调试。 要使内联代码更具可读性,请将其放在花括号中并将其写入多行。