将OjbectBuilder创建的对象注入要查看的属性

时间:2009-11-02 22:12:36

标签: flex data-binding mate

我有一个PresentationModel AS类,它包含SomeView.mxml中使用的所有值。模型的整个类是可绑定的,视图中的模型属性也是可绑定的。但是,我无法使用PropertyInjector标记将模型注入视图:

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

有人对Flex数据绑定更熟悉并且Mate会帮我一臂之力吗?非常感谢!

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> 

来自PresentationModel.as

的代码段
[Bindable]
public class PresentationModel extends EventDispatcher
{
    public var dispatcher:IEventDispatcher;

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

来自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>

2 个答案:

答案 0 :(得分:1)

您可以安全地忽略该信息消息。

当您拥有带源和源键的PropetyInjector时,通常会显示该消息,其中“sourceKey”定义的属性不可绑定,因此我们要确保您知道该属性的当前值将是唯一的目标将获得一个(当属性不可绑定时,复制值并且不建立绑定)。这可能是也可能不是你想要的。

在这种情况下,没有sourceKey,因为您不希望绑定到源的任何特定属性。相反,您希望将整个PM传递给视图。因此,您不希望建立绑定,只需将值发送到视图一次。

在没有sourceKey或只是发送一次性值的情况下(即:发送常量时),可以忽略该消息。

答案 1 :(得分:0)

您无法绑定到类。使类可绑定意味着该类的所有成员都是可绑定的,但不是定义本身。

您应该为演示模型创建一个成员函数(getter / setter),它返回您要用作源的数据。然后,您还需要创建可用于绑定的PresentationModel实例。因此,不是绑定到PresentationModel.data,而是绑定到myPM.data。