代码之家  ›  专栏  ›  技术社区  ›  Marcus Stade Quentin

MXML中的强制属性?

  •  1
  • Marcus Stade Quentin  · 技术社区  · 15 年前

    是否可能通过某种元数据强制设置对象的属性?我们有许多非可视组件,除非设置了一个或多个属性,否则它们不会执行任何操作,例如:

    <ToolTip target="{this}">
        <mx:Image source="foo.png" />
    </ToolTip>
    

    在这种情况下,目标属性最好按要求标记,因为从没有设置它是没有意义的。这不是一个大问题,因为很容易记录下来,但是最好通过让编译器告诉开发人员他的错误来消除至少几个调试往返。

    我们不希望这个标记以任何方式冗余,这可以通过简单地将工具提示组件设置为uicomponent并使用parent属性来解决(在本例中)。但一方面,这会增加不必要的开销,另一方面,这是不恰当的:

    <Button id="btn" label="Foo" />
    <ToolTip target="{btn}">
        <mx:Image source="foo.png" />
    </ToolTip>
    

    那么,强制的MXML属性是可能的吗?

    1 回复  |  直到 15 年前
        1
  •  1
  •   jmreidy    15 年前

    有一个解决方案,但它没有使用元数据那么简单。让您的非可视组件实现imxmlobject接口。接口只有一个方法,“初始化”。实现接口允许您检查通过MXML初始化的对象。

    因此…

    public function initialized(document:Object, id:String):void
    {
      if ( target == null ) throw new Error( "You must supply an argument to target!" );
    } 
    

    最好有编译时检查,但这样做效果不错。

    推荐文章