Как обновить поле status_text (которое является областью TextInput), сохраняя при этом верность архитектуре MVC - PullRequest
1 голос
/ 24 июня 2011

У меня есть это поле, которое держит пользователя в курсе о состоянии бизнес-процесса изменения какой-либо базы данных. Я пытаюсь оставаться верным архитектуре MVC, используя Flex. Я получаю ошибку компиляции:

1119: access of possibly undefined property text through a reference with a static type String.

Вот код для BrowseButtonClickEvent.as:

package business.events
{
    import com.adobe.cairngorm.control.CairngormEvent;

    import flash.events.DataEvent;
    import flash.events.Event;
    import flash.events.IOErrorEvent;
    import flash.net.FileFilter;
    import flash.net.FileReference;

    public class BrowseButtonClickEvent extends CairngormEvent
    {
        static public var EVENT_ID:String="browseButtonClick";
        public var file:FileReference=null;
        private var excelFilter:FileFilter = new FileFilter("*.xlsx", "*.xlsx;*.xls;");
        public var status_txt:String;

        public function BrowseButtonClickEvent()
        { 
            super(EVENT_ID);
            file = new FileReference();
            file.addEventListener(Event.SELECT, fileSelected);
            file.addEventListener(DataEvent.UPLOAD_COMPLETE_DATA, uploadDataComplete);
            file.addEventListener(Event.COMPLETE, uploadComplete);
            file.addEventListener(IOErrorEvent.IO_ERROR, handleError);
            file.browse([excelFilter]);
        }

        public function handleError(event:IOErrorEvent):void 
        {
            status_txt.text = 'ERROR: ' + event.text + '';
        }
        public function fileSelected(event:Event):void
        {
            file = FileReference(event.target);
            file_txt.enabled = true;
            file_txt.text = file.name;
            status_txt.text = 'upload file: '+ file.name  + ''; 
        }

        public function uploadDataComplete(event:DataEvent):void 
        {
            var result:XML = new XML(event.data);
            status_txt.text += 'Upload Data Complete'
            status_txt.text += 'RESULT: ' + result.toString()  + ''
            status_txt.text += 'STATUS: ' + result.status + '';
            status_txt.text += 'MESSAGE: '+ result.message;
        }

        public function uploadComplete(event:Event):void 
        {
            status_txt.text += 'Upload complete';
        }
    }
}

Область TextInput расположена в компоненте MXML следующим образом:

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns:mx="http://www.adobe.com/2006/mxml" width="382" height="232">
    <mx:TextInput x="0" y="0" width="382" height="232" enabled="true" editable="false" id="status_txt"/>
</mx:Canvas>

Так как мне обновить это окно из ActionScript?

1 Ответ

1 голос
/ 24 июня 2011

Ошибка компилятора в том, что вы преобразовали status_txt в виде String, когда он должен быть TextInput.

...