Почему я получаю это предупреждение: 3594: родитель не является распознанным методом динамического класса XML?

Это происходит из этой строки кода:

var dropTargetXML:XML = XMLTemplate.template.component.section.question.(@question_questionID == nNode.parent().@question_questionID)[0];

nNode — это XML-узел, отправляемый в качестве аргумента функции, в которой он вызывается. Код запускается и выполняет все ожидаемые действия, но компилятор выдает это предупреждение. У меня проблемы с форматированием?

P.S. Я пытался сказать, что это такой XML:

var dropTargetXML:XML = XMLTemplate.template.component.section.question.(@question_questionID == XML(nNode).parent().@question_questionID)[0];

но я все еще получаю предупреждение.


person invertedSpear    schedule 26.01.2010    source источник


Ответы (1)


Я не знаю, как это на самом деле реализовано, но я предполагаю, что что-то в фильтрации XML что-то делает с этим под капотом. Быстрым решением было бы вывести рассматриваемый код из области фильтрации, например:

var questionIDToFind:String = nNode.parent().@question_questionID;
XMLTemplate.template.component.section.question.(@question_questionID == questionIDToFind)[0];

Если вам интересно, вы можете прочитать больше об операторе Filtering на страницах 62-63 Спецификация ECMAScript для XML (E4X)

person Robert Bak    schedule 26.01.2010
comment
ВАУ, разве все это не выглядит увлекательным чтением? Я ненавижу создавать переменную для использования один раз и выбрасывания, но вы правы, это предотвращает предупреждение компилятора. - person invertedSpear; 27.01.2010
comment
Я предполагаю, что предупреждение имеет какое-то отношение к тому, как реализовано разрешение запросов E4X внутри запросов фильтра. И я начинаю подозревать, что он использует что-то, связанное с Actionscript 2, может быть, для совместимости? В AS2 XML не было метода parent(). - person Robert Bak; 27.01.2010