1

我正在使用 Parsley 框架。我正在尝试在自定义可视化树组件中注入模型;

private var _model:Model

[Bindable]

public function get model():Model
{
  return _model;
}

public function set model(value:Model):void
{
  _model = value;
}

构建配置:

<Object id="customTree" type="{CustomTree}">
  <Property name="model" idRef="model"/>
</Object>

然后我在 mxml 中使用了这棵树:

<components:CustomTree
        id="categoriesTree"
        width="100%" height="100%"
        labelField="@title"
        right="0" bottom="0" left="0" top="10"           
        doubleClickEnabled="true"
        maxHorizontalScrollPosition="250"
        horizontalScrollPolicy="auto"
        dragEnabled="true"
        dropEnabled="true"
        dataProvider="{model.dataHolder}"
        />

我曾尝试覆盖父函数,但出现错误。(模型为空); override protected function dragDropHandler(event:DragEvent):void { model.action = "drop" }

我在模型设置器中设置了断点并执行了但模型仍然为空;

问题出在哪里?

4

2 回答 2

1

我已经找到了解决这个问题的方法。如果我们尝试在可视组件中注入 smth,我们应该像配置可视组件一样配置它。

public class CustomTree extends Tree
{

public function CustomTree ()
{
  super();
  this.addEventListener(Event.ADDED_TO_STAGE, configure);
}

protected function configure(event:Event):void
{
  this.dispatchEvent(new Event ('configureIOC', true));
}

... }

Mb 有人有其他解决方案吗?

于 2011-08-23T14:20:21.677 回答
0

不确定您是否希望 parsley 实例化您的 CustomTree。而是将模型注入视图并让 mxml 中的 CustomTree 实例绑定到模型。

配置:

<Object id="model" type="Model"/>

MXML:

<mx:Script>
        <![CDATA[
[Inject(id='model')]
[Bindable]
public var model:Model;
]]>
    </mx:Script>

<components:CustomTree
        id="categoriesTree"
        width="100%" height="100%"
        labelField="@title"
        right="0" bottom="0" left="0" top="10"           
        doubleClickEnabled="true"
        maxHorizontalScrollPosition="250"
        horizontalScrollPolicy="auto"
        dragEnabled="true"
        dropEnabled="true"
        dataProvider="{model.dataHolder}"
        />

您不需要 id 进行注入,您可以按类型注入,只需从注入标签和模型配置中删除 id。

于 2011-08-23T23:48:38.393 回答