回答
數據綁定全是關於聲明性地定義數據在UI中的顯示方式。在引擎蓋下,它有點複雜,因爲有更多的需求,而不僅僅是掛鉤addEventListener
來支持數據綁定的功能。
這是一個非常強大的功能,實際上,並更瞭解它,我們可以在一個簡單的「Hello World」應用看:
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark">
<s:HGroup>
<s:TextInput id="input" />
<s:Label text="Hello {input.text}" />
</s:HGroup>
</s:Application>
現在,編譯這個程序與--keep
編譯器標誌,並期待在新文件夾「bin-debug/generated」中。我們感興趣的是HelloWorld-generated.as
這裏是該綁定被定義並呼籲從構造:
private function _HelloWorld_bindingsSetup():Array
{
var result:Array = [];
result[0] = new mx.binding.Binding(this,
function():String
{
var result:* = "Hello " + (input.text);
return (result == undefined ? null : String(result));
},
null,
"_HelloWorld_Label1.text"
);
return result;
}
稍後,在HelloWorld的構造函數,你會得到一個呼叫建立觀察家:
_watcherSetupUtil.setup(this,
function(propertyName:String):* { return target[propertyName]; },
function(propertyName:String):* { return HelloWorld[propertyName]; },
bindings,
watchers);
這真的只是做到這一點:
watchers[0] = new mx.binding.PropertyWatcher("input",
{ propertyChange: true },
[ bindings[0] ] ,
propertyGetter);
watchers[1] = new mx.binding.PropertyWatcher("text",
{ change: true,
textChanged: true },
[ bindings[0] ],
null);
氏ngs通過雙向綁定變得更加複雜。
數據Flex 4中結合可以我猜想被描述爲使用addEventListener()的快捷方式 - 但是這是一個有點像說,汽車只是散步的快捷方式。如果你只是繞着這個區域走,沒有什麼大不了的 - 但是如果你正在構建一個複雜的應用程序,其中包含許多項目渲染器和大量數據點,這些數據點可能會隨時發生變化,數據綁定可以避免編寫數百個addEventListener ()和removeEventListener()調用以及它們相關的處理程序。在這種情況下,這是一件非常重要的事情。
同意。數據綁定在正確使用時非常強大且富有表現力。它將數據的顯示保持在您期望的位置:顯示它的UI元素的位置。它大大減少了你的代碼,並允許你從你的UI中分離你的數據。我大量使用這個功能,因爲它是框架最好的部分之一,IMO。 – 2011-05-10 00:15:09
我也是+1。綁定可以非常強大。我的一個小心是避免過度使用綁定。綁定經常被濫用,並可能導致性能問題,特別是在itemRenderer中。我通過重寫渲染器不使用綁定來解決Flextras客戶端的大量內存問題。例如,沒有一個Flex框架組件使用Binding。這是有原因的。 – JeffryHouser 2011-05-10 01:26:23
@ www.Flextras.com即使這樣,我也不會說應該避免在項目渲染器中綁定數據(你也不是建議這麼做)。我始終在項目渲染器中使用數據綁定,並且從來沒有出現過性能問題。這就是說,我相信他們可以存在。特別是在移動時。這是一個「瞭解你的工具並作出有教育的決定」的例子。對於每個人都會使用的組件(像您的組件),避免數據綁定意義重大。你不知道你的組件將如何使用。但是,在50件事情和1件約束事件的清單中,它通常很好。 – 2011-05-10 10:07:10
- 1. Java Eclipse - 簡單快捷方式
- 2. 菜單快捷方式
- 3. 菜單項快捷方式
- 4. 快捷方式
- 5. 創建簡單的Java應用程序的快捷方式
- 6. 什麼是簡單合併文件的最快捷方式,什麼是分割數組的最快捷方式?
- 7. 在Android中創建簡單對話框的快捷方式
- 8. 使用CMD.exe中的簡單命令創建快捷方式
- 9. 有沒有一種簡單快捷的方式來生成JavaScript?
- 10. 將ICommand綁定到MenuItem並指定快捷方式
- 11. 快捷方式WPF文字的綁定屬性
- 12. wpf綁定命令到窗口的快捷方式
- 13. 綁定命令調色板命令的快捷方式?
- 14. 快捷方式URL的快捷方式(.lnk .url)解析器
- 15. WiX快捷方式覆蓋現有的同名快捷方式
- 16. Qt - 刪除快捷方式 - 模糊的快捷方式超載
- 17. 創建批處理和快捷方式的快捷方式
- 18. Python快捷方式
- 19. PowerShell快捷方式
- 20. MATLAB快捷方式
- 21. Wpf快捷鍵綁定
- 22. VB.NET Winforms菜單項快捷方式覆蓋默認快捷方式?
- 23. 完全指定包的快捷方式?
- 24. Atom:PHP定義的快捷方式
- 25. NetBeans快捷方式的確定列表
- 26. 的JavaScript - 快捷方式,它被定義
- 27. 如何將多個操作綁定到快捷方式
- 28. 如何使用功能鍵綁定/映射快捷方式?
- 29. 快捷方式在Silverlight和默認瀏覽器快捷方式
- 30. Outlook 2013單鍵快捷方式
+1用於在通過綁定完成的生成的ActionScript中添加。 – JeffryHouser 2011-05-10 01:27:38
很好的答案,謝謝你的加入! – Myk 2011-05-10 14:43:16