在Flex中綁定值時,哪種方法更好?Getter和Setter方法與FLex中的公共屬性
4
A
回答
6
曝光使用或者低於被認爲是最好的做法在Flex方法的可綁定公共財產:
[Bindable] public var dataProvider:Object;
[Bindable] public function get dataProvider():Object { ... }
的get/set函數對是一個更靈活一點然後定期的公共財產。通過使用[Bindable]標籤註釋get函數,您仍然可以輕鬆地使該屬性可綁定。但是,您可以在「設置」功能中實現一些自定義邏輯,包括設置髒標誌和使屬性,尺寸或顯示列表無效。例如:
private var _dataProvider:Object;
private var dataProviderChanged:Boolean;
public function set dataProvider(value:Object):void
{
if (_dataProvider != value)
{
_dataProvider = value;
dataProviderChanged = true;
invalidateProperties();
}
}
[Bindable] public function get dataProvider():Object
{
return _dataProvider;
}
此模式在Flex框架組件中大量使用。失效模型非常乾淨,並且還可以在自定義組件中實現最佳性能。
您還可以指定綁定屬性自定義事件,以便您可以觸發其從多個地方結合,而不是僅僅通過調用設置:
[Bindable("dataProviderChanged")]
public function get dataProvider():Object
{
return _dataProvider;
}
public function someRandomMethod():void
{
// ...
// pretend that we just finished some processing
_dataProvider = newValue;
dispatchEvent(new Event("dataProviderChanged"));
}
這也很好地工作,如果你想使屬性是隻讀的,這意味着它沒有匹配的「set」方法。
0
在大多數情況下,性能是幾個原因更好:
1)可以很容易在MXML中設置屬性。例如:
<mx:Button label="Bla">
,其中標籤是公共財產。而使用setter/getter函數是不可能的,你必須從腳本中調用setLabel(「Bla」)。
2)屬性與setters和getters基本相同。 當setter變得複雜時,我喜歡創建一個額外的私有方法。
public function get label():String
{
return _label;
}
public function set label(value:String):void
{
setLabel(value);
}
private function setLabel(value:String):void
{
if(value == "") {
// do something
} else {
_label = value;
remeasureComponent(); // or whatever
}
}
3)它是內置於語言,所以使用它。 加上它看起來更好地說object.label = "Bla"
比object.setLabel("Bla")
相關問題
- 1. 公共getter和setter方法私人
- 2. VB.NET:屬性與公共getter和受保護的setter
- 3. 如何使用obj-c製作公共getter和private setter屬性?
- 4. TypeScript Setter的公共屬性
- 5. 類圖屬性可見性。公共屬性可以有getter和setter操作?
- 6. 公共getter和setter方法的JavaScript對象
- 7. 自動測試屬性getter/setter方法
- 8. Getter和Setter方法
- 9. setter和getter方法
- 10. setter和getter公約
- 11. C#BestPractice:私人var和公共的getter/setter或公共變種
- 12. 理解C#屬性的語法和getter/setter方法
- 13. getter/setter VS公共變量的好處?
- 14. 公共getter,帶CodeDOM的受保護setter
- 15. 語法布爾getter/setter方法和屬性
- 16. C#類公共屬性:getter和setter在這裏做正確的事情嗎?
- 17. 如何編寫虛擬屬性的getter和setter方法?
- 18. 創建一個從屬性的getter和setter方法
- 19. NSMutableArray Setter和Getter方法
- 20. Gui getter和setter方法
- 21. 調用getter和setter方法
- 22. 設置getter和setter方法
- 23. Laravel 4:getter和setter方法
- 24. getter和setter方法在WCF
- 25. Objective C - 枚舉的Getter和setter屬性
- 26. C#屬性的getter和setter實施
- 27. 您可以添加一個約束,該屬性只能添加到C#中的公共getter和setter屬性中:
- 28. 獲取所有公共方法和屬性的getter和傳遞他們liquid_methods
- 29. Setter/getter類屬性(Object.assign)?
- 30. Swizzle swift屬性getter/setter
好的答案謝謝 – 2009-07-28 09:42:16