FLEX에서 간단한 서비스 레이어와 VIEW 레이어를 분리하는 방법
3624 단어 service
서비스 계층
서비스 클래스 계승 mx.rpc.http.mxml.HTTPService
이 서비스 클래스에서 데이터 요청과 간단한 논리 처리를 실현합니다
코드:
package services {
import mx.collections.ArrayCollection;
import mx.rpc.events.ResultEvent;
import mx.rpc.http.mxml.HTTPService;
import valueObjects.Product;
public class ProductService extends HTTPService {
[Bindable]
public var products:ArrayCollection;
public function ProductService(rootURL:String=null, destination:String=null) {
super(rootURL, destination);
this.resultFormat="e4x";
this.url="http://www.flexgrocer.com/categorizedProducts.xml";
addEventListener(ResultEvent.RESULT, handleProductResult);
}
private function handleProductResult( event:ResultEvent ):void {
var productsArray:Array = new Array();
var resultData:XMLList = event.result..product;
for each (var p:XML in resultData) {
var product:Product = Product.buildProductFromAttributes( p );
productsArray.push( product );
}
products = new ArrayCollection( productsArray );
}
}
}
2. View 레이어 코드:
View 레이어에서 서비스 레이어 레이블을 직접 사용
코드:
<?xml version="1.0" encoding="utf-8"?>
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:views="views.*" xmlns:services="services.*"
creationComplete="handleCreationComplete(event)">
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
<services:CategoryService id="categoryService"/>
<services:ProductService id="productService"/>
</fx:Declarations>
<fx:Script>
<![CDATA[
import mx.events.FlexEvent;
private function handleViewCartClick( event:MouseEvent ):void {
bodyGroup.currentState="cartView";
}
private function handleCreationComplete(event:FlexEvent):void {
categoryService.send();
productService.send();
}
]]>
</fx:Script>
<s:controlBarLayout>
<s:BasicLayout/>
</s:controlBarLayout>
<s:controlBarContent>
<s:Button y="10" label="Checkout" id="btnCheckout" right="10"/>
<s:Button y="10" label="View Cart" id="btnCartView" right="90" click="handleViewCartClick( event )"/>
<s:Button label="Flex Grocer" x="5" y="5"/>
<s:List left="200" height="40" dataProvider="{categoryService.categories}" labelField="name">
<s:layout>
<s:HorizontalLayout/>
</s:layout>
</s:List>
</s:controlBarContent>
<s:Label text="(c) 2009, FlexGrocer" right="10" bottom="10"/>
<views:ShoppingView id="bodyGroup"
width="100%" height="100%"
groceryInventory="{productService.products}"/>
</s:Application>
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Angular에서 서비스를 사용하여 데이터 공유Michael은 두 가지 구성 요소로 각도 프로젝트를 시작했습니다. 그는 입력 데코레이터를 사용하여 부모에서 자식 구성 요소로 데이터를 전달하고 출력 데코레이터를 사용하여 자식에서 부모 구성 요소로 데이터를 전달했습...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.