У меня есть класс AS PresentationModel, который содержит все значения, используемые в 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>
0
tomato 3 Ноя 2009 в 01:12
Как выглядит остальная часть PresentationModel?
 – 
Stiggler
10 Ноя 2009 в 21:07

2 ответа

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

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

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

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

1
Laura 23 Дек 2009 в 07:29

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

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

0
Glenn 3 Ноя 2009 в 14:02