`
jakielong
  • 浏览: 228359 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

Cairngorm初学者入门教程 第四节--通过 Model Locator 控制管理 Views

    博客分类:
  • Flex
阅读更多

  • Cairngorm: Views
  • 就是使用者最直观看到的显示,包含了button, panel… 等所组成的视图,它从Model Locator中取得数据,通过Cairngorm Events与用户产生互动。
  •  

    在这个部分,我们利用ModelLocator控制ViewStack来切换View。

    首先我们先在ViewModelLocator.as 中加入

    public var workflowState:uint = 0;
     用来记录ViewStack中,显示哪个View。

    再加入下面静态常量,让程序提高可读性。

    public static const LOGIN_SCREEN:uint = 0;
    public static const MAIN_SCREEN:uint = 1;

     整个ViewModelLocator.as的代码为:

    package org.rianotes.CairngormSample.model
    {
     import com.adobe.cairngorm.model.IModelLocator;
     
     import mx.collections.ArrayCollection;
     
        [Bindable]
        public class ViewModelLocator implements IModelLocator {
     
            // Single Instance of Our ModelLocator
            private static var instance:ViewModelLocator;
            public function ViewModelLocator(enforcer:SingletonEnforcer) {
             if (enforcer == null) {
                    throw new Error( "You Can Only Have One ViewModelLocator" );
                }
            }
     
            // 回传已存的参数
            // Returns the Single Instance
            public static function getInstance() : ViewModelLocator {
                if (instance == null) {
                    instance = new ViewModelLocator( new SingletonEnforcer );
                }
                return instance;
            }
     
            //在下面定义你需要的共用参数 - DEFINE YOUR VARIABLES HERE
            public var contactbook:ArrayCollection = new ArrayCollection();
            public var workflowState:uint = 0;
     
      //在下面定义你需要的常数 - DEFINE VIEW CONSTANTS
      public static const LOGIN_SCREEN:uint = 0;
      public static const MAIN_SCREEN:uint = 1;
     
        }
    }
     
    // Utility Class to Deny Access to Constructor
    class SingletonEnforcer {}
     然后我们在项目中加入:

    一个Component

    NamedBox.mxml - 用于显示名称

    <?xml version="1.0" encoding="utf-8"?>
    <mx:HBox xmlns:mx="http://www.adobe.com/2006/mxml"
     width="100%" height="100%"
     borderStyle="solid" borderThickness="1"
     borderColor="#666666" backgroundColor="#CCCCCC"
     horizontalAlign="center" verticalAlign="middle">
     
     <mx:Script>
      <![CDATA[
       [Bindable]
       public var boxName:String;
      ]]>
     </mx:Script>
     
     <mx:Label
      fontSize="30" color="#666666"
      fontWeight="bold" text="{this.boxName}" />
     
    </mx:HBox>
     两个View

     

    LoginView.mxml - Login 的 View,包含Login Button

    <?xml version="1.0" encoding="utf-8"?>
    <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml"
     horizontalAlign="right" xmlns:components="org.rianotes.CairngormSample.view.components.*">
     <mx:Script>
      <![CDATA[
       import org.rianotes.CairngormSample.model.ViewModelLocator;
       [Bindable]
       private var model:ViewModelLocator = ViewModelLocator.getInstance();
     
      ]]>
     </mx:Script>
     <components:NamedBox boxName="Login Screen"/>
     <mx:Button label="Login" click="{model.workflowState = ViewModelLocator.MAIN_SCREEN}" />
    </mx:VBox>

     MainView.mxml - 主 View,包含Logout Button

    <?xml version="1.0" encoding="utf-8"?>
    <mx:VBox xmlns:mx="http://www.adobe.com/2006/mxml" 
     horizontalAlign="right" xmlns:components="org.rianotes.CairngormSample.view.components.*">
     <mx:Script>
      <![CDATA[
       import org.rianotes.CairngormSample.model.ViewModelLocator;
       [Bindable]
       private var model:ViewModelLocator = ViewModelLocator.getInstance();
     
      ]]>
     </mx:Script>
     <mx:HBox width="100%" height="100%">
      <mx:VBox width="50%" height="100%">  
       <mx:Label text="{'Number of Contacts: ' + model.contactbook.length}" />
       <components:ContactbookGrid width="100%" height="100%"/>
      </mx:VBox>
      <components:AddPersonForm width="50%" height="100%" />
     </mx:HBox>
     <mx:Button  label="Logout" click="{model.workflowState = ViewModelLocator.LOGIN_SCREEN}"/>
    </mx:VBox>

     我们利用LoginView与MainView中的Login,Logout按钮的click事件去改变ModelLocator中的workflowState的值

    下面行的意思是一样的

    model.workflowState = ViewModelLocator.LOGIN_SCREEN;
    model.workflowState = 0;
     但是前者可读性较高,在合作大型项目时需要这种方式。

     

    最后再修改MXML application

    Main.mxml - 主项目文件

    <?xml version="1.0" encoding="utf-8"?>
    <mx:Application 
     xmlns:mx="http://www.adobe.com/2006/mxml" 
     xmlns:view="org.rianotes.CairngormSample.view.*"
     layout="absolute" >
     
     <mx:Script>
      <![CDATA[
       import org.rianotes.CairngormSample.model.ViewModelLocator;
       [Bindable]
       private var model:ViewModelLocator = ViewModelLocator.getInstance();
     
      ]]>
     </mx:Script>
     <mx:ViewStack id="vsMain" width="100%" height="100%"
      selectedIndex="{model.workflowState}">  
     
      <!--第0個View-->
      <view:LoginView />
     
      <!--第1個View-->
      <view:MainView />
     </mx:ViewStack> 
    </mx:Application>
     
    分享到:
    评论

    相关推荐

      Cairngorm入门教程整合spring

      作者尚吉存希望读者能够通过本教程快速入门Cairngorm,避免浪费时间,而他自己也仍在进一步探索Cairngorm框架的更深层次内容。在教程的最后,作者强调了本教程的目的是帮助初学者入门,更深层次的内容需要读者自行...

      Flex开发框架cairngorm入门实例教程

      在Cairngorm中,模型(Model)、视图(View)和控制器(Controller)之间的通信是通过事件驱动机制实现的。 首先,我们来看一下Cairngorm的核心组成部分: 1. **模型(Model)**:模型通常包含了应用的数据和业务...

      Flex开发框架cairngorm入门实例教程.rar

      在“flex cairngorm入门实例教程”中,你可能会学到如何设置项目环境,引入Cairngorm库,创建和配置模型、控制器、命令以及事件监听器。教程可能还会涵盖如何使用Service Locator来注入依赖,以及如何使用...

      [cairngorm入门]introducing_cairngorm.pdf

      ### Cairngorm框架入门知识点详解 #### 一、Cairngorm框架简介 - **定义与背景**:Cairngorm是一种专为Adobe Flex应用程序设计的模型-视图-控制器...对于初学者来说,掌握这些基本概念和技术点是非常重要的第一步。

      cairngorm简单入门实例(结合spring+ibatis)

      **cairngorm简介** `Cairngorm`是一个轻量级的ActionScript框架...总之,这个入门实例为开发者提供了一个实践Cairngorm、Spring和iBatis集成的起点,通过深入理解并动手操作,有助于掌握这些技术在实际开发中的运用。

      Flex Cairngorm内部培训教程

      Flex Cairngorm是一种基于Adobe Flex的轻量级MVC(模型-视图-控制器)框架,主要用于构建富互联网应用程序(RIA)。Cairngorm最初由Iteration:Two开发,随着Adobe Flex 2和ActionScript 3的发布,它成为了Adobe官方...

      cairngorm中文版

      在提供的压缩包文件中,"Cairngorm中文版.pdf"和"Cairngorm中文版"很可能是对Cairngorm框架的详细中文教程和实例,对于初学者来说,是学习和理解Cairngorm的宝贵资源。通过深入学习这些资料,开发者可以更好地掌握...

      Flex3/4 Cairngorm框架 入门 源码 主要是登陆注册功能。

      本教程将通过一个登录注册功能的实例,帮助初学者理解并掌握Cairngorm框架的基本概念和用法。 首先,Cairngorm的核心组件包括: 1. **模型(Model)**:存储和管理应用程序数据,通常与后台服务进行交互以获取或...

      flex Cairngorm 实例

      Flex Cairngorm框架是Adobe Flex应用程序开发中的一个流行MVC(Model-View-Controller)框架,它提供了一种结构化的方式来组织复杂的Flex项目,以实现可维护性和可扩展性。本实例将深入探讨Cairngorm的各个组件以及...

      Cairngorm开发文档中文版

      Cairngorm是一种轻量级的ActionScript框架,主要用于构建Flex和Adobe AIR应用程序。这个框架是基于模型-视图-控制器(MVC)设计模式,旨在提高应用的可维护性和可扩展性。Cairngorm由Adobe开源社区推出,旨在为开发...

      flex-Cairngorm框架

      - Model:模型层负责管理应用程序的数据,通常与后台服务(如Web服务或数据库)进行交互,提供数据给视图。 - View:视图层负责展示数据,用户界面组件如按钮、文本框等,它们通常与控制器进行交互来响应用户的...

      Flex轻量级开发框架-Cairngorm介绍

      ### Flex轻量级开发框架——Cairngorm详细介绍 #### 一、引言 随着RIA(Rich Internet Applications)技术的发展,Flex作为一种强大的客户端技术,在构建交互丰富的应用方面展现了其独特的优势。为了更好地组织代码...

      Cairngorm.swc+Cairngorm+开发文档中文版.rar 套装

      这个“Cairngorm.swc+Cairngorm+开发文档中文版.rar”套装提供了一个完整的Cairngorm框架,以及相关的中文开发文档,对于初学者和经验丰富的开发者来说都是一个宝贵的资源。 Cairngorm的核心设计理念是基于Model-...

      Cairngorm deepdive

      Cairngorm的第一个版本是在Flex出现之前为Flash开发的,当时主要包含Service Locator和服务辅助器(View Helper)。其中,服务辅助器主要用于管理Flash应用程序中的会话对象,而Service Locator则提供了一个单一入口...

      Cairngorm学习教程

      Cairngorm学习教程 Cairngorm是Adobe Flex中的一款轻量级MVC(Model-View-Controller)框架,它旨在帮助开发者更好地组织和管理Flex应用的代码,提高开发效率,实现模块化和可扩展性。这个框架以其简单、灵活和可...

      Cairngorm简单小例子

      在提供的"Cairngorm"压缩包文件中,初学者可以通过查看和运行示例项目来学习如何在实际开发中应用这些概念。通过学习Cairngorm,开发者能够更好地理解如何组织Flex应用程序,提高代码的可读性和可维护性,同时利用其...

      Flex-cairngorm-demo我喜欢的

      Flex Cairngorm 框架是一个面向Flex开发者的重要工具,尤其对于那些致力于构建大型、可扩展的MVC(Model-View-Controller)架构的应用程序。这个框架为ActionScript 3.0开发提供了强大的设计模式支持,使代码组织...

      Professional Cairngorm

      #### 第4章:模型定位器(Model Locator) - **定义**:模型定位器是Cairngorm中的一个核心组件,用于存储和管理视图模型数据。 - **工作原理**:深入解析模型定位器的工作原理,包括它是如何与其他组件交互的。 ##...

      Cairngorm例子

      Cairngorm是一个轻量级的MVC(Model-View-Controller)框架,主要用于构建Adobe Flex和ActionScript 3.0应用程序。这个框架是开源的,由Adobe社区维护,旨在帮助开发者实现更有序、可扩展和可维护的代码结构。 在...

      Cairngorm-Flex.zip_Cairngorm_flex

      Cairngorm框架是Adobe Flex开发中的一种著名轻量级MVC(Model-View-Controller)框架,由Adobe公司的专业团队设计,旨在提高Flex应用程序的可维护性和可扩展性。这个框架的核心理念是通过分离业务逻辑、用户界面和...

    Global site tag (gtag.js) - Google Analytics