[Flex] Hướng dẫn cài đặt framework Cairngorm. P4

ViewHelper

Nhiều ý kiến cho rằng ViewHelpers như một cách để xác định vị trí, theo dõi và đơn giản hóa việc sử dụng các View. Một ứng dụng lớn sẽ gồm cả trăm lớp View và việc quản lý các View này sẽ trở nên rất khó khăn. Chính vì thế khái niệm ViewLocator, cũng như ServiceLocator và ModelLocator được tạo ra nhằm quản lý các view thông qua các chuỗi định danh và giao tiếp với các View thông qua các phương thức có phạm vi public.

Như vậy, ViewHelper có thể được định nghĩa như sau:

Một ViewHelper là một lớp triệu gọi các phương thức trên tất cả các View mà nó quản lý. ViewLocator là một Singleton chứa tất cả các ViewHelper và quản lý các ViewHelper thông qua chuỗi định danh.

Khi nào cần cài đặt ViewHelper ?

Như tôi đã nhấn mạnh trong các phần trước thì một Command sau khi thực hiện một tác vụ từ web service sẽ cập nhật thay đổi vào Model (ModelLocator), từ đó sẽ update lên view thông qua cơ chế  binding. Tất nhiên, việc sử dụng ViewHelper sẽ tránh cho việc đặt quá nhiều dữ liệu vào ModelLocator. Trong trường hơp này, Command sẽ liên lạc với ViewLocator để tìm view tương ứng, sau đó gọi các phương thức public của view để cập nhật trực tiếp sự thay đổi.

Trong lớp LoginView (LoginView.mxml), bạn cần khai báo

<view:LoginViewHelper id="viewHelper" />

Nội dung của LoginViewHelper thì có sẽ giống như sau

package org.catapult.eslide.view {
        public class LoginViewHelper extends ViewHelper {
             public function LoginViewHelper() {
                    super();
        }

        public function itemClickHandler(e:ListEvent):void {
               LoginView(this.view).updateTitle(e.itemRenderer.name);
        }
     }
}

Như vậy từ LoginViewHelper, bạn hoàn toàn có thể truy cập các thành phần trong LoginView. Như vậy trong Command, thông qua ViewLocator, bạn có thể truy cập vào các ViewHelper. ViewLocator được khai báo và định nghĩa như ServiceLocator. Đó là 1 file MXML có hàng loạt các tag của các ViewHelper và id tương ứng mà qua đó các Command có thể truy xuất được.

Cairngorm 3.0 và Flex 4

Trong khi tôi đang thực hiện loạt bài về Cairgorm – phiên bản Cairngorm 2.2 – thì Adobe đã phát hành phiên bản tiếp theo là Cairngorm 3.0. Tất nhiên là tôi sẽ tiếp tục sử dụng Cairngorm 2.2 cho các project Flex 3 trước khi chuyển hoàn toàn sang Flex 4 với Cairngorm 3.0, mặc dù phiên bản Flex 3 hay 4 đều không ảnh hưởng đến việc dùng Cairngorm 2.2 hay 3.0. Vấn đề chính là “design – in – mind” – slogan mới của Adobe trong quy trình phát triển ứng dụng với Flex 4 và Cairngorm 3.0

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s