2012-11-28 41 views
2

我有一個很大的問題結合此方法:Flex 4中的DataGridColumn:功能綁定到HEADERTEXT沒有作用

[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')}" /> 

的結合接縫根本不beeing執行。 (想想,因爲跟蹤()不叫,我已經debuged吧)

但同樣完美的作品在這裏:

<mx:Label text="{PDMPlusPlusModelLocator.localeString('employeeView.employeeFilter.noDottedManager')}"/> 

劑量人有一個想法是什麼問題?

注:我裏德this post,我認爲這是同樣的問題,但它不爲我工作的任何原因引起:

+0

我試了一下,並綁定工作,如果我綁定的是位於同一MXML作爲DataGrid中的一個方法。但那不是我想要的。 我想有一個大致的localeString功能,而不必每寫一個MXML :( – Devian88

回答

0

的問題就在這裏:可綁定(事件= LOCALE_CHANGED_EVENT_TYPE)]

這是一個預處理器規則,尚未對其引用做出解決。切實什麼[綁定]確實是寫一個事件偵聽器爲你(通過返回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中工作,我只能推測你的派發事件不是一個定義的事件類,但類似的東西 - 只是一個定義的字符串?很難說。

+0

嘿麥克, 首先讓說:謝謝您的回答 我想你missunderstood什麼我想要做的 我不要。如果沒有String創建,函數localeString()應該返回建立的語言環境String (例如,對於路徑「foo.bar」,它應該返回「Hello World」)**或**對於路徑它應該返回路徑字符串(例如「foo.bar」) 該函數本身工作得很好,現在我想綁定這個函數,因爲路徑字符串是固定的,我不能綁定它自己。 – Devian88

0

終於讓我找到了會發生什麼(並理解邁克之意)

的問題是第一:

這不能用:

[Bindable(event=LOCALE_CHANGED_EVENT_TYPE)] 

它應該是:

[Bindable(event="foo.bar.LocaleChanged")] 

而且Seound失敗:

該方法應該不是靜態的,因爲它只在啓動時間工作一次,如果它是靜態的。

THX爲您解答:)