为啥我第二次点击 fileReferencer.browse 按钮​​后 TextInput 会更新

Posted

技术标签:

【中文标题】为啥我第二次点击 fileReferencer.browse 按钮​​后 TextInput 会更新【英文标题】:Why is TextInput updating after I hit fileReferencer.browse button a second time为什么我第二次点击 fileReferencer.browse 按钮​​后 TextInput 会更新 【发布时间】:2011-09-18 17:52:37 【问题描述】:

在 Flex 4 中,我试图让一个简单的浏览按钮使用浏览按钮获取的文件名来更新 TextInput 对象的文本字段。它不必是完整路径,我想要的只是显示的文件名。它仅在第二次点击浏览按钮后出现,而不是在我第一次选择文件后出现。这是我的代码:

import flash.net.FileReference;

        private var fileReferencer:FileReference = new FileReference();
        private var excelFilter:FileFilter = new FileFilter("*.xlsx", "*.xlsx;*.xls;");
        protected var fileName:String = new String("");

        protected function BrowseButton_clickHandler(event:MouseEvent):void
        
            fileReferencer.browse([excelFilter]);
            fileName = fileReferencer.name;
            fileInputAddress.text = fileName;
        

所以回顾一下,文件名仅在第二次点击浏览按钮时显示在我的 TextInput 框中。

我做错了什么?

【问题讨论】:

请不要在帖子标题中添加标签(AKA Flex 4)。谢谢! 【参考方案1】:

Flash Player 是完全异步的。所以你不能在调用fileReferencer.browse() 后立即获得文件名。这就是为什么你有一个来自过去电话的名字。要修复您的代码,您应该订阅 selectcancel 事件并仅在 select 事件之后更改文本(请参阅 the documentation)。

【讨论】:

就在您回答这个问题时,我发现一篇博客文章使用了您的确切答案。非常感谢你的帮助。如果有人对该链接感兴趣,那就是here

以上是关于为啥我第二次点击 fileReferencer.browse 按钮​​后 TextInput 会更新的主要内容,如果未能解决你的问题,请参考以下文章

为啥 MySQL 查询在我第二次运行时更快?

当我第二次实例化预制件时,为啥会出现错误?

当我第二次设置它的 ItemsSource 时,为啥这个选择器会崩溃?

为啥当我第二次使用完全相同的参数调用 IMMUTABLE 函数时,计划时间会加倍?

当我第二次启动应用程序时标签消失

Jquery .animate() 在我第二次触发它时不起作用