2011-08-22 2 views
1

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

private var _model:Model 

[Bindable] 

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

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

Сложение Config:

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

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

Где проблема?

+0

Код, который вы опубликовали, не имеет смысла. Пожалуйста, покажите все это. Кроме того, вы ничего не вводите. –

+0

Я опускаю конфигурацию модели в Build Config. – nkukhar

ответ

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 кого-то есть какое-то другое решение?

0

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

Config:

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

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

+0

Думаю, я вас смутил. Мне нужно было ввести модель в CustomTree, а не в компонент MXML. У меня есть класс - CustomTree.as внутри этого класса. Я выполняю некоторые действия с моделью. Затем я использовал CustomTree в mxml. И да, я знаю, что я могу вводить без id. Но спасибо за информацию. – nkukhar