我有一个很大的问题来绑定这个方法:
[Bindable(event=LOCALE_CHANGED_EVENT_TYPE)]
public static function localeString(pathInLocale:String):String
{
var value:String=LocaleUtil.getValueFromLocaleFromStringPath(pathInLocale);
if (value == null || value.length == 0)
{
value=pathInLocale;
}
trace(value);
return value;
}
像这样:
<mx:DataGridColumn headerText="{PDMPlusPlusModelLocator.localeString('employeeView.employeeFilter.noDottedManager')}" />
Binding接缝根本没有被执行。 (想一想,因为没有调用trace()并且我已经对其进行了调整)
但同样的作品在这里很完美:
<mx:Label text="{PDMPlusPlusModelLocator.localeString('employeeView.employeeFilter.noDottedManager')}"/>
任何人都知道问题是什么?
注意:我real this post我觉得这是同样的问题,但是由于任何原因它对我不起作用:
答案 0 :(得分:0)
问题在于:[Bindable(event = LOCALE_CHANGED_EVENT_TYPE)]
这是一个尚未对其引用进行解析的预处理程序规则。实际上[Bindable]的作用是为你编写一个事件监听器(通过其他地方的ChangeWatcher),并且因为它们基于'魔术字符串',所以你的语句需要看起来类似于:
public static const LOCALE_CHANGED_EVENT:String = "localeChangedEvent";
[Bindable(event="localeChangedEvent")]
function foo(param:int):void
{
var oldValue:int = _fooFighters;
_fooFighters = param;
if (oldValue != param) dispatch(new Event(LOCALE_CHANGED_EVENT));
}
现在这已经过度简化,但你可以希望得到这个想法。至于为什么它与DataGrid在同一个mxml中工作,我只能推测你的调度事件不是一个定义的事件类,而是上面类似的 - 只是一个定义的字符串?很难说。
答案 1 :(得分:0)
最后我发现了会发生什么(并了解迈克的意思)
问题首先出现:
不能使用:
[Bindable(event=LOCALE_CHANGED_EVENT_TYPE)]
应该是:
[Bindable(event="foo.bar.LocaleChanged")]
而且声音失败了:
该方法不是静态的,因为它只在启动时才起作用,如果它是静态的。
谢谢你答案:)