Parsley 自动组件装配实例
Web

Parsley 自动组件装配实例

Flying
2013-09-18 / 0 评论 / 104 阅读 / 正在检测是否收录...

前面的实例我们都是使用 <Configure> 标签将一个组件直接连接到它所在的上下文中,这就是显式组件装配。这种方式虽然很方便的,但它不是唯一的方法。而且这种方式带来了一个问题:我们不得不为每个要管理的组件类添加配置标签。可不可以使用上下文配置文件来管理这些组件呢?

自动组件装配

答案是肯定的。Parsley 具有自动组件装配功能,它让您能够集中配置哪些视图应该管理,哪些视图不应该管理。自动组件装配必须显式地激活。如下面代码片段:

<parsley:ContextBuilder>
  <parsley:ViewSettings autowireComponents="true"/>
  <parsley:FlexConfig type="AppConfig" />
</parsley:ContextBuilder>

ContextBuilder 设置 ViewSettingsautowireComponents 属性值 true,然后变可以在上下文配置文件添加 <View> 标签了。如 Parsley-Autowire 实例中的配置:

<fx:Declarations>
  <model:SharedModel11/>
  <parsley:View type="views.SenderView"/>
  <parsley:View type="views.ReceiverView"/>
</fx:Declarations>

现在两个 View 中可以不使用 <Configure> 标签了。最终该实例的工程结构应该是这样的:

autowire.gif

实际上,该方法只能算是手动装配组件,如果项目中会很多要管理的视图,该方法就不实用了。更简捷有效的做法是使用自定义过滤器,通过编程的方式定义一定规则来自动装配组件。

自定义过滤器

自定义过滤器最简单的方法是扩展 DefaultViewAutowireFilter 和覆盖 filter 方法。如 AutowireFilterSample 类所示:

public class AutowireFilterSample extends DefaultViewAutowireFilter
{
  override public function filter(object:DisplayObject):ViewAutowireMode
  {
    var fullClassname:String = getQualifiedClassName(object);
    if (fullClassname.indexOf(&quot;views::&quot;) == 0) 
    {
      return ViewAutowireMode.ALWAYS;
    }
    else
    {
      return ViewAutowireMode.NEVER;
    }
  }  
}

此处的逻辑很简单:如果视图的完全限定类名中包含 views 就管理该视图。然后在 ContextBuilderViewSettings 的 autowireFilter 属性值指定为 AutowireFilterSample 类的实例。上下文配置文件中就可以不需要配置视图了。Parsley-AutowireFilter 实例的工程结构应该是这样的:

autowirefilter.gif)

点击此处下载该实例的源码。

参考文档

要更多了解 Parsley 自动组件装配,请查看 Parsley 文档相应部分

7

评论 (0)

取消