我想在MXML文件中包含一个MXML文件,就像使用include指令在AS3中包含外部文件一样。使用include伪指令在编译时将外部文件中的代码放入原始文件中,并将其置于同一范围内。
例如,
Application.mxml:
<Application>
<source="external.mxml"/>
</Application>
External.mxml:
<Styles/>
<Declarations>
<Object id="test"/>
</Declarations>
我需要将此代码/ mxml / xml保留在原始范围内的外部文件中。不要问我为什么要这样做。
另一个例子。这是我当前的代码(简化)全部在1 mxml文件中:
...
File1.mxml
<Button click="clickHandler()"/>
<Script>
public function clickHandler():void {
}
</Script>
...
这就是我想要的:
...
File1.mxml
<Group>
<source="File2.mxml"/>
<Button click="clickHandler()"/>
<Group>
File2.mxml
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>
...
我想将我的代码拆分成一个单独的文件......
~~ 更新 ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ~~~~~~~~~~~~~~~~~~~~~
虽然不是我要求使用“代码隐藏”方案,但是将代码从视图中分离出来可以获得部分功劳。因此,我创建了一个MXML文件,MyGroup.mxml或MyGroup.as,并扩展了包含clickHandler代码的Group。
这个方法的问题是我被锁定到我正在扩展的类类型,硬编码视图。因此,例如,如果我要拆分为单独文件的MXML类是Group,则必须扩展Group。
我曾参与完成这项工作的项目,但这并不好。人们开始在类后面的代码中设置样式和可视方面或组/查看特定属性,如果我们需要更改它或布局,我们最终将所有这些依赖项放到容器中。它变得一团糟。另外,使用Code Behind,您无法重用它(重用方式包括styles.as被重用)。所以这不是一个解决方案,但我想我会提到它。
这是示例背后的代码,
MyGroupBehind.mxml:
<Group>
<Script>
public function clickHandler():void {
trace(this); // File1.mxml
}
</Script>
</Group>
MyGroupAhead.mxml:
<MyGroupBehind>
<Button click="clickHandler()"/>
</MyGroupBehind>
答案 0 :(得分:2)
编译器将MXML转换为类,因此无法按照您的要求进行操作。
就个人而言,我认为这是一件好事。将事情分解为单独的文件并不等于“更有条理”。事实上,我会说它达到了完全相反的效果。你最好把注意力放在合适的组件结构上,恕我直言。
答案 1 :(得分:1)
只需输入自定义组件的名称,然后按Ctrl + Space即可。代码完成将填充您可能要添加的可能内容列表,包括组件的名称。使用向下箭头选择组件的名称,然后按enter键。代码完成将设置命名空间并启动组件的标记。如果你到了行的末尾并输入“/&gt;” (没有报价),瞧!您将拥有一个代表自定义MXML组件的内联标记。
答案 2 :(得分:0)
首先,任何外部mxml都应该是有效的XML。现在,只要您拥有有效的MXML文件,只需按名称添加它,如下所示:
<Application>
<external:External/>
</Application>
其中'external'是External.mxml文件的命名空间。
答案 3 :(得分:-1)
在视图文件夹中将我的MXML文件称为示例。只需在您希望它在
中的父MXML文件中调用它e.g。
<views:Example/>