Как принудительно выполнить проверку Flex при отображении контейнера

StackOverflow https://stackoverflow.com/questions/1199225

Вопрос

У меня есть приложение Flex 3 с представлением в стеке представлений, и это представление необходимо создавать только по запросу.Я объявил валидаторы для каждого элемента управления в представлении и создал метод checkAllValid(), который запускает Validator.validateAll().Это прекрасно работает, когда я на самом деле использую элементы управления (используя события изменения или фокуса), но как я могу заставить checkAllValid() запускаться, когда представление впервые отображается пользователю, чтобы им сразу же показывалось то, что недействительно один раз? данные заполняются в элементах управления?

Я пробовал поместить вызов в различные события самого представления (например,CreationComplete, updateComplete, show, active и т. д.), но при запуске приложения всегда отображается следующая ошибка:

«Атрибут источника должен быть указан вместе с атрибутом свойства».

Я также попытался установить для параметра CreationPolicy в представлении значение «все», но это не помогает.

Некоторые валидаторы активируются только тогда, когда форма находится в определенном состоянии, но я устранил это как потенциальную проблему, закомментировав все мои валидаторы, кроме этого самого простого:

<mx:Array id="validators"><mx:StringValidator id="val_Address1" source="{Address1}" property="text" required="true" triggerEvent=""/></mx:Array>

Метод checkAllValid() очень прост:

private function checkAllValid():void{              
        var validationErrors: Array = Validator.validateAll(validators);        
}

Я также пробовал напрямую вызывать один валидатор вместо использования validateAll, и результат тот же.

Пожалуйста помоги!Должен быть способ заставить представление проверяться при его отображении....

(кстати, это в рамках Cairngorm MVC, и у меня есть данные, привязанные к элементам управления)

Это было полезно?

Решение

Понятно!Я добавил аналогичные валидаторы в другое представление, и они работали нормально.В чем разница?Метод, вызывавший checkAllValid(), вызывался при событии CreationComplete объекта внутренний контейнер - не основной компонент представления.

Так что, в конце концов, это не имело ничего общего с самой проверкой - просто я не до конца понимал порядок создания.

Я оставлю этот вопрос здесь на тот случай, если кто-то столкнется с аналогичной проблемой с порядком создания.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top