Внедрение объекта, созданного OjbectBuilder, в качестве свойства для просмотра

У меня есть 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 ответа

Вы можете смело игнорировать это информационное сообщение.

Это сообщение обычно отображается, когда у вас есть PropetyInjector с исходным кодом и ключом источника, где свойство, определенное с помощью "sourceKey", не может быть привязано, поэтому мы хотим убедиться, что вы знаете, что текущее значение этого свойства будет единственным целевым когда-либо получит (когда свойство не является привязываемым, значение копируется, и привязка не устанавливается). Это может или не может быть то, что вы хотите.

В этом случае нет sourceKey, потому что вы не хотите связываться с каким-либо конкретным свойством источника. Вместо этого вы хотите передать весь PM для просмотра. Из-за этого вы не хотите устанавливать привязку, просто отправьте значение в представление один раз.

В тех случаях, когда sourceKey отсутствует, или когда вы просто отправляете одноразовое значение (т. Е. Когда вы отправляете константу), сообщение можно игнорировать.

Вы не можете привязать к классу. Привязка класса означает, что все члены этого класса будут привязаны, но не само определение.

Вы должны создать функцию-член (getter/setter) для модели представления, которая возвращает данные, которые вы хотите использовать в качестве источника. Затем вам также необходимо создать экземпляр PresentationModel, который вы можете использовать для привязки. Таким образом, вместо привязки к PresentationModel.data, вы должны связываться с myPM.data.

Другие вопросы по тегам