星期日, 4月 12, 2009

Data binding

這個禮拜繼續寫學姐的code,現在系統已經能夠快取新聞的完整內文,還可以用Flex寫出來的Viewer來和後端的PHP Script做溝通。

這件事情之前寫病理實切片系統也做過。不過那時是PHP直接輸出JPEG,然後用loader把PHP視為JPEG載入。這次是作到後端前端交換文字資料。

本來想說又要做需要花很多時間且bug很多的小Parser。不過查詢文件後發現有XML Binding這種技術:只要PHP端能輸出XML,前端的Flex viewer就能把傳回來的XML視為陣列或物件直接存取。不用寫Parser,連DOM Traversal都不必,ACtionscript好~方~便~啊啊啊啊啊啊啊啊啊

更神的是,還有一項技術稱為DataProvider,只要將UI的component(如DataGrid)的DataProvider指向XML變出來的陣列,且該陣列有設定[Bindable] metatag,那麼當該陣列變動的時候,UI component的內容也會自動改變。原理是Flex compiler會自動幫你產生getter和setter,並且在setter中幫你丟出事件。

倘若沒有Event-driven programming,那coder就要自己攔截所有可能發生改變的地方,或是用function模擬getter和setter,但這樣syntax就很醜且變數和getter/setter不能一視同仁。但有了Event-driven programming卻沒有Data binding的話,coder還是要自己寫程式處理資料的變動。有了兩者,要自動把XML轉成陣列,Flex只要寫零行程式,要加上Data binding,也只要一行程式。只要弄懂這個方法,以後程式內部的資料流動就非常方便XDDDD

現在把我丟回去寫C/C++,我大概會有回到上古時代的感覺吧..XD 全文連結

0 意見: