在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