国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 網(wǎng)站 > WEB開發(fā) > 正文

21.5.創(chuàng)建Cairngorm視圖、事件和模型

2024-04-27 13:52:28
字體:
供稿:網(wǎng)友
21.5.1.問題
我需要?jiǎng)?chuàng)建一個(gè)Cairngorm視圖,并把它綁定到模型的屬性上。
21.5.2.解決方案
創(chuàng)建一個(gè)實(shí)現(xiàn)了Cairngorm ModelLocator接口的模型類,往這個(gè)類里添加需要的數(shù)據(jù)屬性,并把這些屬性標(biāo)記為可綁定的。然后把視圖中所有數(shù)據(jù)驅(qū)動(dòng)的控件綁定到這個(gè)模型的對(duì)應(yīng)屬性上。
21.5.3.討論
Cairngorm控制器的視圖不需要擴(kuò)展任何類,它可以是任意類型。視圖最重要的特征是它們綁定到模型類的屬性上,并且當(dāng)需要從服務(wù)器加載數(shù)據(jù)或者需要向服務(wù)器發(fā)送數(shù)據(jù)時(shí),它們會(huì)觸發(fā)CairngormEvent。

接下來的幾部分將創(chuàng)建一個(gè)Cairngorm應(yīng)用程序,我們將按照書寫的順序而不是開發(fā)的順序一步步顯示它們。這個(gè)程序的視圖包括:一個(gè)mx:Button,點(diǎn)擊它會(huì)生成一個(gè)加載recipes的事件,該事件會(huì)調(diào)用服務(wù)并加載recipes;一個(gè)DataGrid,用來顯示從服務(wù)器收到的結(jié)果:
+展開
-XML
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxmlwidth="400height="300">
<mx:Script>
<![CDATA[
import
oreilly.cookbook.cairngorm.events.RecipeEvent;
import oreilly.cookbook.cairngorm.model.Model;
/*在下面的方法中,會(huì)發(fā)送RecipeEvent,該事件使得FrontController接收來自服務(wù)器的數(shù)據(jù),我們不需要知道服務(wù)器究竟是從數(shù)據(jù)庫(kù)中讀取數(shù)據(jù)還是從其他地方讀取。更多關(guān)于FrontController的信息,請(qǐng)查看21.8小節(jié)。而現(xiàn)在,我們關(guān)心的是視圖和視圖發(fā)送的通知應(yīng)用程序獲取數(shù)據(jù)的事件。另外需要注意的是,CairngormEvent類有一個(gè)dispatch方法,用來把它們發(fā)送到Cairngorm EventDispatcher上。這跟通常情況下處理事件的方式不同,需要確保事件被FrontController處理而不是被其他的截獲。*/
privatefunction loadRecipes():void{
var evt:RecipeEvent = newRecipeEvent(RecipeEvent.GET_RECIPE);
evt.recipeKeywords= recipeKeywords.text.split("," );
//Note that the CairngormEvent class dispatches itself
//This notifies the Cairngorm EventBroadcaster that the event
//is being dispatched. This is used to ensure that the Cairngorm architecture
//handles the event rather than the flash.events.EventDispatcher
evt.dispatch();
}

]]>
</mx:Script>
<mx:VBox>
<mx:TextInput id="recipeKeywords"/>
<mx:Button label="Load Recipesclick="loadRecipes()"/>
<!--Cairngorm程序視圖的另一個(gè)重要特征是它綁定到模型上。下面的例子中recipeArray是服務(wù)器返回的數(shù)據(jù)數(shù)組,它保存在模型中,視圖就綁定到它上面。這樣不需要把視圖暴露給服務(wù)相關(guān)的邏輯,就能在數(shù)據(jù)加載到應(yīng)用程序時(shí)更新視圖。-->
<mx:DataGrid dataProvider="{Model.getInstance().recipeArray}">
<mx:columns>
<mx:DataGridColumn dataField="title"/>
<mx:DataGridColumn dataField="difficulty"/>
<mx:DataGridColumn dataField="pictureURL">
<mx:itemRenderer>
<mx:Component>
<mx:Image source="{data}"/>
</mx:Component>
</mx:itemRenderer>
</mx:DataGridColumn>
<mx:DataGridColumn dataField="preparationTime"/>
<mx:DataGridColumn dataField="ingredients"/>
<mx:DataGridColumn dataField="instructions"/>
</mx:columns>
</mx:DataGrid>
</mx:VBox>
</mx:Canvas>
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 玛多县| 辉南县| 集贤县| 秭归县| 安塞县| 张家港市| 若尔盖县| 华蓥市| 屏南县| 固原市| 年辖:市辖区| 峡江县| 固始县| 吉安县| 林芝县| 山东省| 沾益县| 东宁县| 荔浦县| 弥勒县| 长乐市| 烟台市| 潜山县| 台安县| 延寿县| 隆尧县| 清镇市| 望都县| 高青县| 德格县| 玛纳斯县| 万源市| 汶上县| 新乡市| 冷水江市| 汝州市| 静宁县| 烟台市| 高密市| 合川市| 鄂州市|