如何使用MXML中的fx:String将文件嵌入到字符串中?

时间:2015-08-04 00:23:12

标签: flex flex4 mxml

我正在尝试使用以下语法在外部文件中包含一个长字符串:

<fx:String id="myText" source="examples/text.txt" />

但它产生了一个错误:

1084: Syntax error: expecting identifier before rightparen. 

有什么我想念的吗?

我已经看到类似于使用ActionScript嵌入文本文件,但我想使用MXML嵌入字符串值。

我在Flex help docs上找到了这个例子:

<fx:String id="myStringProperty1" source="./file"/>

我看不到任何与众不同的事情。

1 个答案:

答案 0 :(得分:0)

好的,我找到了原因。在我的外部文件中,我有一些花括号。编译器被挂起了。

以下是我的外部文件的内容:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head>
        <style type="text/css" media="screen"> 
            html, body  {
                height:100%;
            }
        </style>
    </head>
</html>

它具有body { height:100% }的部分将其解释为数据绑定。这是生成的ActionScript:

    result[1] = new mx.binding.Binding(this,
        function():String
        {
            var result:* = "<html xmlns=\"http://www.w3.org/1999/xhtml\" lang=\"en\" xml:lang=\"en\"> \n    <head>\n        <style type=\"text/css\" media=\"screen\"> \n            html, body  " + (
            height:100%;
        ) + "\n        </style>\n    </head>\n</html>";
            return (result == undefined ? null : String(result));
        },
        null,
        "HTML"
        );

正如你所看到的,它认为我在花括号之间使用数据绑定。因为我不是,所以它会抛出一个错误,因为“高度:100%”在使用它的情况下是脱离背景的。

我想我必须尝试一种不同的方法来嵌入这个文本。如果我使用它似乎没问题,但我宁愿不这样做:

<fx:String id="HTML">
    <![CDATA[<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head>
        <style type="text/css" media="screen"> 
            html, body  {
                height:100%;
            }
        </style>
    </head>
    </html>]]>
</fx:String>

<强> UPDATE !!!
我错了!有可能的。我必须至少逃脱开口的大括号,然后才行。

有效的文件内容:

<html xmlns="http://www.w3.org/1999/xhtml" lang="en" xml:lang="en"> 
    <head>
        <style type="text/css" media="screen"> 
            html, body  \{
                height:100%;
            \}
        </style>
    </head>
</html>