【问题标题】:Flex databinding function (non-getter)Flex 数据绑定函数(非 getter)
【发布时间】:2011-07-27 19:48:12
【问题描述】:

我有一个 flex 应用程序,它依赖于一个稍微抽象 flex 资源管理器的类。我使用的(纯 AS3)类扩展了 EventDispatcher,并处理本地化信息的运行时加载以及返回已翻译的标记。 我不能使用基础资源管理器,因为如果找不到令牌,我不希望它返回 null。

/endexposition

当我尝试使我的 getString 函数可绑定时,我的问题就出现了。

[Bindable(event="bundleLoaded")]
public function getString...

“bundleLoaded”事件被适当地分派。这个功能在我参与开发的 90% 的应用程序中都能正常工作。但是,对于 ONE 应用程序,我收到以下混淆错误:

1084:语法错误:在 s 之前需要右括号。资源=(项目名称)路径=(空)位置=第 301 行

在我添加 [Bindable...] 行之前,应用程序编译并工作(显然减去绑定),但在我添加该行之后,它拒绝正确编译。任何应用程序或支持类的第 301 行都没有任何有趣的内容。

有什么建议吗?有人有类似经历吗?

【问题讨论】:

  • +1 为 wekk 书面问题。这对我来说似乎很奇怪。 Bindable 行是引发错误的行吗?应用程序是否使用与不引发错误的应用程序相同的 SDK 来引发错误?是否存在编译器设置差异?我已经抓住了救命稻草,但是如果你改用单引号而不是双引号呢?
  • 第 301 行的代码是什么?如果第 301 行的代码是 [Bindable],那么您可能在它之前的行上的某些代码存在问题。尝试将这些行移到类的顶部,看看你得到了什么错误。我敢打赌,您在 301 之前的某个函数中缺少“}”或“]”
  • @Flextras,是的,相同的 SDK (3.5)。不应该是任何编译器设置差异,但我会仔细检查。其他应用程序在同一个项目中(在 Flash Builder 4.0 中开发),所以不太可能(不可能?)。将尝试单引号,我已经抓住了几个小时的稻草:)
  • @asMan,这个特殊的类没有 300 行。我试图移动它们,添加空格,发现错误没有区别。在这一点上,我假设这是由 [Bindable...] 元数据创建的自动生成代码中的一个问题,(感谢 flexcoders yahoo 组的回复)我很快就会看看。跨度>

标签: apache-flex actionscript-3 data-binding flex3


【解决方案1】:

好吧,在搜索生成的代码后,我发现了一个问题(这将是向 flex sdk 报告的错误)。

我的代码将文本属性绑定到资源(用于本地化)。

该属性使用了三元运算。一旦我创建了这个绑定,生成的代码就去掉了“:”和“?”从我的三元运算,导致了一个错误。

    myResourceManager.getString('bundle','token',[numDays, numDays != 1 ? 's' : ''])

编译器把它变成了...

    new mx.binding.FunctionReturnWatcher("getString", target, 
        function():Array 
        { return [ "bundle", "token", [target.numDays, target.numDays != 1"s"""] ]; }

给我留下了一个很好的、模棱两可的编译器错误。感谢观看,伙计们!这个是固定的。

编辑:如果有人感兴趣:https://bugs.adobe.com/jira/browse/SDK-30937

【讨论】:

    猜你喜欢
    • 2015-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-02-15
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    相关资源
    最近更新 更多