现在的位置: 首页 > 综合 > 正文

1065: 变量 未定义 Flex

2013年10月28日 ⁄ 综合 ⁄ 共 1821字 ⁄ 字号 评论关闭

  1065:变量未定义。这是一个简单又复杂的问题,有时候你一眼就能看出哪个变量未定义,但有时候你找来找去怎么也找不到未定义的变量,而且程序编译还没有任何错误。你能够通过界面预览查看相关的界面,这真是一个头疼的问题,苍天啊,程序呀,你为什么不编译出错告诉我错在哪里,却偏偏要在程序运行过程中,给我一个Error,这让我情何以堪~ ~



 

  下面就让我们来看一段示例代码,这段代码经过编译后,无任何的错误,而且通过界面预览可以看到界面的原型。通过我们在确定用户需求后,就可以通过Flex绘制出简单的界面原型后,就开始着手概要设计及详细设计,为下一步的编码做好充足的准备。

<mx:HBox width="100%" height="100%">
                  <mx:DataGrid id="dg" width="100%" height="100%" dataProvider="{datasearchList}" doubleClickEnabled="true"
                                     textAlign="center">
                        <mx:columns>
                              <mx:DataGridColumn dataField="" headerText="全选">
                                    <mx:itemRenderer>
                                          <mx:Component>
                                                <mx:HBox>
                                                      <mx:CheckBox id="chxBox" selected="{data.selected}" />
                                                </mx:HBox>
                                          </mx:Component>
                                    </mx:itemRenderer>
                              </mx:DataGridColumn>
                              <mx:DataGridColumn headerText="名称" dataField="infoName"/>
                              <mx:DataGridColumn headerText="岗位" dataField="positionId"/>
                              <mx:DataGridColumn headerText="类别" dataField="category"/>
                              <mx:DataGridColumn headerText="状态" dataField="stateId"/>
                              <mx:DataGridColumn headerText="版本" dataField="version"/>
                              <mx:DataGridColumn headerText="提交人" dataField="applicant"/>
                              <mx:DataGridColumn headerText="提交时间" dataField="createTime"/>
                              <mx:DataGridColumn headerText="退回意见" dataField="returnOpinion"/>
                        </mx:columns>
                  </mx:DataGrid>
            </mx:HBox>


     界面原型预览


  接下来我们启动系统,重现错误警告,从下图中可以看到系统无法正常运行。而在前面的代码编译过程中以及界面预览的过程中是没有任何的错误。
  刚开始接触Flex编程的工程师可能对这个问题比较棘手,但是经过稍加分析之后,我们就能够清楚的发现Code中有两个不严谨之处,首先就是DataField的字段名称未指定,而是写成了空属性。而我们在编码过程中,DataGrid中指定数据源之后,各数据字段的值就是数据集中各数据字段中的值。
  这是一个很容易忽略的Error,只要程序编译成功,就可以正常运行。而在一般的Java代码或者.NET代码中也的确是这样,但是总有一种不普通的东西来打破普通的平衡,就像是Flex一样。由于它特别强大的灵活性,比如可以动态的增加属性,从而导致了它在语法编译处理上就不会特别严谨,所以开发Flex应用程序需要扎实的基本功,同时还需要细心。
  将DataField填充完毕之后,仍然弹出上面的错误,而这次没有遗漏掉任何的空字段,那么我们开始要查找系统中所有的变量了。既然Error:变量未定义,肯定是有变量在运行的过程中没有进行初始化。经过逐步审查,终于找到了这个不明显的Bug,那就是没有为DataProvider指定的数据源赋值(初始化),那么变量未定义是理所当然的啦。
  当系统出现Bug时,我们首先要根据系统的提示定位到错误的代码,然后对该代码进行核查后进行修改。如果错误日志中没有明确指明出错的位置,那我们就要根据系统的架构,按照系统的运行步骤,通过断点调试找出Bug的所在。
  Bug不可怕,可怕的是不会找Bug的方法!

抱歉!评论已关闭.