OpenLaszlo DataPointer не работает должным образом

У меня есть следующий фрагмент кода, который дает ожидаемый результат в OL 3.3 и в OL 4.9.

Когда я по какой-то причине интегрирую код с моим приложением OL4.9, в Openlaszlo 4.9 я получаю "части" как ноль. Я не могу понять причину. Правильный ли следующий код?

OL3.3

<canvas>
<attribute name="result" />
<attribute name="dp" value="$once{new LzDatapointer()}" />
<handler name="onresult">
    _populateList();
</handler>
<method name="_populateList">
            var node = LzDataNode.stringToLzData(result);
            Debug.write('_populateList' , node);
            dp.setPointer(node);
            Debug.write('_populateList dp' , dp);
            var parts = dp.xpathQuery('tracker');
            Debug.write("parts::" , parts);
            var partsArray = new Array();
            if ( parts instanceof LzDataNode ) {
                partsArray[0] = parts;
            }
            else if ( parts instanceof Array ) {
                partsArray = parts;
            }           
</method>
<button name="sample">Click Me
<handler name="onclick"><![CDATA[
    canvas.setAttribute('result','<root><child1/><child2><sub/><sub/></child2><tracker sequence_number="1" next="NULL"/></root> ');
]]></handler>
</button>       
</canvas>

OL4.9

<canvas>
<attribute name="result" />
<attribute name="dp" value="$once{new lz.datapointer()}" />
<handler name="onresult">
    _populateList();
</handler>
<method name="_populateList" >
        var node = lz.DataElement.stringToLzData(result);
            Debug.write('_populateList' , node);
            dp.setPointer(node);
            Debug.write('_populateList dp' , dp);
            var parts = dp.xpathQuery('tracker');
            Debug.write("parts::" , parts);
            var partsArray = new Array();
            if ( parts instanceof lz.DataElement ) {
                partsArray[0] = parts;
            }
            else if ( parts instanceof Array ) {
                partsArray = parts;
            }           
</method>

<button name="sample">Click Me

<handler name="onclick"><![CDATA[
    canvas.setAttribute('result','<root><child1/><child2><sub/><sub/></child2><tracker sequence_number="1" next="NULL"/></root> ');
]]></handler>
</button>
</canvas>

1 ответ

Это может быть проблема 4,9. Я тестировал с веткой flex4.6, и вот мой вывод.

ветка flex4.6, среда выполнения swf11:

_populateList «LzDataElement#0| <root><child1/><child2><sub/><sub/></child2><tracker sequence_number="1" next="NULL"/></root>» 
_populateList dp «<datapointer>#1| <root><child1/><child2><sub/><sub/></child2><tracker sequence_number="1" next="NULL"/></root>» 
parts:: «LzDataElement#2| <tracker sequence_number="1" next="NULL"/>»

ветка flex4.6, среда выполнения DHTML

_populateList «LzDataElement#0| <root><child1/><child2><sub/><sub/></child2><tracker sequence_number="1" next="NULL"/></root>»
_populateList dp «<datapointer>#1| <root><child1/><child2><sub/><sub/></child2><tracker sequence_number="1" next="NULL"/></root>»
parts:: «LzDataElement#2| <tracker sequence_number="1" next="NULL"/>» 

Какой выход вы видите с 4.9? У меня не установлено 4,9 для тестирования.

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