2009-11-02 2 views
0

SomeView.mxml에 사용 된 모든 값을 보유하는 PresentationModel AS 클래스가 있습니다. 모델의 전체 클래스는 바인딩 가능하며 뷰의 모델 속성도 바인딩 할 수 있습니다. 그러나, 나는 PropertyInjector 태그를 사용하여보기로 모델을 주입 드릴 수 없습니다 : 플렉스 데이터 바인딩과 나에게 손을 줄 메이트와OjbectBuilder에서 만든 객체를 볼 속성으로 입력하십시오.

- INFO: Data binding will not be able to detect assignments to model 

겠습니까 사람을 익숙하게? 고마워요!

MainEventMap.mxml

<EventHandlers type="{FlexEvent.INITIALIZE}"> 
    <ObjectBuilder generator="{PresentationModel}" registerTarget="true"> 
     <Properties dispatcher="{scope.dispatcher}"/> 
    </ObjectBuilder> 
</EventHandlers> 


<Injectors target="{SomeView}" debug="true"> 
    <PropertyInjector targetKey="model" source="{PresentationModel}" /> 
</Injectors> 

발췌문 SomeView.mxml

<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="518" height="562" > 
<mx:Script> 
    <![CDATA[ 

     //...... all the imports 

     [Bindable] 
     public var model:OSGiBrokerConsoleModel; 

     // ......other variables and functions 
    ]]> 
</mx:Script> 

    // ..... actual view components 

</mx:Canvas> 
+0

나머지 PresentationModel은 어떤 모습입니까? – Stiggler

답변

0

에서 PresentationModel.as

[Bindable] 
public class PresentationModel extends EventDispatcher 
{ 
    public var dispatcher:IEventDispatcher; 

    //.....other variables and functions 
} 

스 니펫에서 당신은 클래스에 바인딩 할 수 없습니다. 클래스를 바인딩 가능하게 만드는 것은 해당 클래스의 모든 멤버가 바인딩 가능하지만 정의 자체는 바인딩되지 않는다는 것을 의미합니다.

소스로 사용할 데이터를 반환하는 프레젠테이션 모델에 대한 멤버 함수 (getter/setter)를 만들어야합니다. 그런 다음 바인딩에 사용할 수있는 PresentationModel의 인스턴스를 만들어야합니다. 따라서 PresentationModel.data에 바인딩하는 대신 myPM.data에 바인딩합니다.

1

해당 정보 메시지는 무시해도됩니다.

"sourceKey"로 정의 된 속성이 바인딩 할 수없는 소스 및 소스 키가있는 PropetyInjector가있는 경우 일반적으로이 메시지가 표시되므로 해당 속성의 현재 값이 하나의 대상 만 얻을 수 있습니다 (속성이 바인딩 가능하지 않으면 값이 복사되고 바인딩이 설정되지 않습니다). 그것은 당신이 원하는 것일 수도 아닐 수도 있습니다.

소스의 특정 속성에 바인딩하지 않으므로 sourceKey가 없습니다. 대신 전체 PM을보기로 전달하려고합니다. 이 때문에 바인딩을 설정하고 싶지 않고 뷰에 값을 한 번 보내면됩니다.

sourceKey가 없거나 단순히 일회성 값을 보내는 경우 (예 : 상수를 보낼 때) 메시지를 무시할 수 있습니다.