最近,福克斯須要教同事,如何設計 Flex。當我們討論到 Binding 的時候,福克斯發現,這個觀念似乎對某些程式設計師來說,不容易被接受。一些 Flex 的設計師們可能會覺得,這麼好用的東西,怎麼可能會不容易接受。福克斯發現,不易被接受的原因並不是不好用,而是不夠直覺。說真的,Flex Binding 的設計可以算是目前不錯的設計。所以這一系列的文章,將會和大家一起討論,如何正確地使用 Binding 這項工具。
Binding 是指一個永遠成立的方程式,例如: objA.x = objB.y + n。此時,如果 objB.y 改變的時候,objA.x 也會跟著被修改。針對這種關係,在傳統的程式語言中(如 Java, C#, C++, JavaScript…等),我們必須要在 objB 中加入一個 event listener 用來聽取 y 修改的事件,進而重新計算方程式的結果。
Flex 的 Binding 也是使用同樣的設計方式。當我們在 Flex 中建立一個 Binding 時,Flex 會自動建立 event listener 並自動建立重新計算方程式的 function。
福克斯建議,第一次接觸 Binding 最好從最簡單的模式開始學習。所以,以下是完成 objA.x = objB.y 的 Binding 呼叫方式:
BindingUtils.bindProperty(objA, "x", objB, "y");
這段程式中,BindingUtils 是 mx.binding.utils package 中用來建立 Binding 的物件。最簡單使用 Binding 的方式,就是讓兩個物件的一個屬性互相連結在一起。以上面的這個例子來說,我們使用最簡單的方式,即 bindProperty 來連結兩個物件的屬性。我們可以直接以方程式 objA.x = objB.y 的方式來看,呼叫 BindingUtils.bindProperty 時,可以使用同樣的順序來呼叫。所以,我們可以直接將方程式的參數,直接代入 BindingUtils.bindProperty 之中。要特別注意的地方是,物件的 property 部份,都必須要以『字串』的方式輸入。
In Flex, the binding is made by BindingUtils and ChangeWatcher.

沒有留言:
張貼留言