Flex 页面切换如何传值

    利用Cairngorm框架,页面间导航使用NavigationEvent函数,但是这个导航函数只能接受导航的页面类的字符串,而参数如何传递呢?有人说这个可以再发一个事件,然后把数据放在事件中,也有人说可以做一个全局的变量,切换前进行设置,然后在切换后的页面使用。但是无论怎样,都会有一个问题:页面切换和参数事件,页面切换和全局变量之间的先后顺序。如果页面没有切换完,页面还没有初始化,它怎么监听参数事件;如果页面已经切换完成,但是全局变量还没来得及变化,那么页面的上的数据肯定不是当前的。

    Flex中的绑定机制,给了我们解决问题的答案。

 

    这里选择第二种方案,利用全局变量传值。在跳转后的页面加一个属性变化的监听器。

  

use namespace UFAF_internal;
override UFAF_internal function set view(value:DisplayObject):void
{
	super.UFAF_internal::view = value;
	init();
}

 

private function init():void
{
    ChangeWatcher.watch(model,"executeId",ChangedHandler);
}
private function ChangedHandler( event:PropertyChangeEvent ):void
{
    var civ:EnrollmentDetailView = enrollmentDetailView;
    if(model.executeId){
	civ.executeId = model.executeId;
    }
}

 

注意:

    一是这个监听必须在页面实例创建的时候,而不是页面已经加载的时候;

    二是在处理函数中,不能操作页面的元素,因为页面还没完成初始化呢。

你可能感兴趣的:(Flex,cairngorm,navigationevent)