Инжекционная модель в визуальном компоненте - PullRequest
1 голос
/ 22 августа 2011

Я использую Parsley Framework.Я пытаюсь внедрить модель в пользовательский визуальный компонент дерева;

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" }

Я установил точку останова в установщике модели, и она была выполнена, но модель все еще пуста;

В чем проблема?

Ответы [ 2 ]

1 голос
/ 23 августа 2011

Я нашел, как решить эту проблему.Если мы пытаемся внедрить что-то в визуальный компонент, мы должны настроить его так же, как настраиваем визуальные компоненты.

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));
}

... }

Мб, у кого-нибудь есть какое-то другое решение?

0 голосов
/ 24 августа 2011

Не уверен, что вы хотите, чтобы петрушка создала экземпляр вашего CustomTree.Вместо этого вставьте модель в представление и позвольте экземпляру CustomTree в mxml привязаться к модели.

Конфиг:

<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}"
        />

Вам не нужен идентификатордля инъекций вы можете ввести их по типу, просто отбросьте идентификаторы из тега инъекции и настройку для модели.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...