DropDownList выдает ошибку: this.view не определено - PullRequest
1 голос
/ 06 октября 2019

Основной файл:

<j:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:local="*"
                   xmlns:models="models.*"
                   xmlns:js="library://ns.apache.org/royale/basic"  xmlns:j="library://ns.apache.org/royale/jewel">
    <fx:Script>
        <![CDATA[
            import models.ProductsModel;

            import org.apache.royale.html.DataGrid;

            import products.Product;
            import org.apache.royale.collections.ArrayList;

        ]]>
    </fx:Script>

    <js:valuesImpl>
        <js:SimpleCSSValuesImpl />
    </js:valuesImpl>

    <js:initialView >
    <j:View>
    <j:beads>
        <js:ContainerDataBinding/>
    </j:beads>
    <js:model> 
        <models:ListsModel id="listModel" />
    </js:model>

                <j:DropDownList>
                    <j:beads>
                     <js:ConstantBinding
                            sourceID="listModel"
                            sourcePropertyName="ComponentList"
                            destinationPropertyName="dataProvider" />
                    </j:beads>
                </j:DropDownList>
    </j:View>
    </js:initialView>
</j:Application>

Ошибка отладки, которую я получаю: this.view не определено

Эта ошибка указывает на следующую функцию в DropDownListController. JS файл:

org.apache.royale.jewel.beads.controllers.DropDownListController.prototype.selectedHandler = function(event) {
  this.model.selectedIndex = (event.index) >> 0;
  this.model.selectedItem = event.data;
  this.view.host.dispatchEvent(new org.apache.royale.events.Event(org.apache.royale.events.Event.CHANGE));
};

Есть идеи, почему это исключение?

1 Ответ

1 голос
/ 07 октября 2019

Вы проверяли, что у вашего listModel есть свойство ComponentList?

Попробуйте этот код, он работает на моей стороне на SDK 0.9.4 и 0.9.6

<j:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
                   xmlns:local="*"
                   xmlns:models="models.*"
                   xmlns:js="library://ns.apache.org/royale/basic"  xmlns:j="library://ns.apache.org/royale/jewel">
    <fx:Script>
        <![CDATA[
           // import models.ProductsModel;

            import org.apache.royale.html.DataGrid;

            //import products.Product;
            import org.apache.royale.collections.ArrayList;

        ]]>
    </fx:Script>

    <js:valuesImpl>
        <js:SimpleCSSValuesImpl />
    </js:valuesImpl>

    <js:initialView >
    <j:View>
    <j:beads>
        <js:ContainerDataBinding/>
    </j:beads>
                <j:DropDownList>
                    <j:dataProvider>
                        <js:ArrayList  source="[Iron Man, Hulk, Thor, Captain America, Hawkeye]" />
                    </j:dataProvider>
                </j:DropDownList>
    </j:View>
    </js:initialView>
</j:Application>
...