以前の投稿:
Swiz Framework(概要)
この投稿では、Swizフレームワークで書かれた最も単純なアプリケーションがどのように動作し、どのように動作するかを説明しようとします。 質問やコメントがありましたら、コメントを書いてください。みんなに答えようとします。 この例で説明されているソースは
ここにあります。
したがって、Swizを使用したFlexアプリケーションの最も簡単な図は次のとおりです。
ビュー(またはプレゼンテーションモデル)は、メタタグ
[Mediate(event="someEvent")]
を使用してコントローラーによってキャッチされたイベントをディスパッチし、コントローラーがサービスを呼び出してモデルを変更します。 ビューには、モデルの変更のみが反映されます。
注入する
何が何に注入されるかを理解するために、図を見ることができます:
モデルがビューとコントローラーに挿入されます。 したがって、モデルはビューを表示し、コントローラーがそれを更新します。 サービスもデリゲートに注入され、デリゲートはコントローラーに注入されます。
構成部品
メインの
SwizQuickstart.mxml
アプリケーションには、BeanFormsとconfig、およびUserFormビューを指定するSwizコンポーネントが含まれています
<fx:宣言>
<swiz:Swiz>
<swiz:beanProviders>
<config:Beans />
</ swiz:beanProviders>
<swiz:config>
<swiz:SwizConfig
eventPackages = "org.swizframework.quickswiz.event。*"
viewPackages = "org.swizframework.quickswiz.view。*" />
</ swiz:config>
</ swiz:swiz>
</ fx:宣言>
<view:UserForm id = "userForm" />
すべてのコンポーネントを順番に分析しましょう
Swizconfig
フレームワーク全体がこのクラスで構成されます。 次のようになります。
<swiz:SwizConfig
setUpEventType = "{Event.ADDED_TO_STAGE}"
setUpEventPhase = "{EventPhase.CAPTURING_PHASE}"
setUpEventPriority = "50"
tearDownEventType = "{Event.REMOVED_FROM_STAGE}"
tearDownEventPhase = "{EventPhase.CAPTURING_PHASE}"
tearDownEventPriority = "50"
eventPackages = "com.foo.events、org.bar.events"
validateEventTypes = "true"
viewPackages = "com.foo.views、org.bar.events"
defaultFaultHandler = "handleUnhandledFaults"
defaultDispatcher = "global" />
豆
beanProvidersには、含まれるコントローラー、モデル、サービス、デリゲートが示されます。 これらのクラスを処理するプロセスでは、すべてのメタタグが含まれ、すべての内部プロセスが発生します。
<config:Beans />
クラスは次のとおりです。
<swiz:BeanProvider
xmlns:fx = "http://ns.adobe.com/mxml/2009"
xmlns:swiz = "http://swiz.swizframework.org"
xmlns:service = "org.swizframework.quickswiz.service。*"
xmlns:controller = "org.swizframework.quickswiz.controller。*">
<service:UserService id = "userService" />
<controller:UserController id = "userController" />
<!-Swiz ServiceHelperを使用して、サーバー側の呼び出しをシミュレートします。 ->
<swiz:ServiceHelper id = "serviceHelper" />
</ swiz:BeanProvider>
したがって、Beansを処理した後、Swizはすでにサービスとコントローラーがあることを知っています。
ユーザーフォーム
これは単純なmxmlであり、最も興味深いのは注入です。
[バインド可能]
[注入(ソース= "userController.currentUser"、バインド= "true")]
public var user:ユーザー。
さらに、ユーザーモデルを使用して、たとえば次のものを表示できます。
<s:TextInput id = "firstName" text = "{user.firstName}" />
すべての仕組み:
ビューには、モデルから取得したものが表示されます。
<s:TextInput id="firstName" text="{user.firstName}" />
次に、ユーザーはデータを編集し、保存ボタンをクリックします。
<s:Button label="Save" click="saveUser()" />
ディスパッチされたイベント
user.firstName = firstName.text;
user.lastName = lastName.text;
user.email = email.text;
var event : UserEvent = new UserEvent( UserEvent.SAVE_USER_REQUESTED );
event.user = user;
dispatchEvent( event );
イベントはコントローラーでキャッチされ、サービスを呼び出します。 userService.saveUser(ユーザー)コマンドはAsyncTokenを返します。 これはそれぞれ、AsyncTokenが返すデリゲートと呼び出しになります。
[仲介(イベント= "UserEvent.SAVE_USER_REQUESTED"、プロパティ= "ユーザー")]
パブリック関数saveUser(ユーザー:ユーザー):void
{
serviceHelper.executeServiceCall(userService.saveUser(ユーザー)、handleSaveUserResult);
}
AsyncTokenが結果イベントを送出した後、handleSaveUserResult関数が実行されます
プライベート関数handleSaveUserResult(イベント:ResultEvent):void
{
Alert.show( 'ユーザーは正常に保存されました!');
}
この場所では、それに応じてモデルを変更するか、コントローラーまたはプレゼンテーションモデルで[Mediate]タグを使用して正常にキャッチできるイベントをotdatchatchできます。
次の投稿では、より包括的なSwizベースのアプリケーションがどのように機能するかを分析し、Swizクラスのプロパティについても詳しく説明します。