2011-09-20 92 views
0

我已经看到了其他一些帖子,但从来没有真正看到任何人指出可能导致它和什么解决方案。DropDownList Flex 4.5不工作

我有一个loginview,我有一个数据模型和演示模型,通过欧芹注入。

下拉列表突然停止“工作”。该列表绑定到DM中的一些数据。你可以点击列表,但下拉菜单从不发生,我根本没有任何错误。它只是不显示。

该应用程序是一个AIR应用程序,并且如果这使得任何区别,LoginView在主窗口中。

<?xml version="1.0" encoding="utf-8"?> 
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009" 
         xmlns:s="library://ns.adobe.com/flex/spark" 
         xmlns:mx="library://ns.adobe.com/flex/mx" 
         xmlns:view="com.guhsd.academicnotifier.icon.view.*" 
         creationComplete="onCreationComplete(event)" 
         alpha="0"> 


    <fx:Script> 
     <![CDATA[ 
      import spark.filters.DropShadowFilter; 
      import com.greensock.TweenMax; 
      import com.greensock.easing.Quad; 
      import com.guhsd.academicnotifier.events.LoginEvent; 
      import com.guhsd.academicnotifier.login.model.LoginDM; 

      import mx.binding.utils.BindingUtils; 
      import mx.events.FlexEvent; 

      [Inject] 
      public var pm : LoginPM; 
      [Inject] 
      [Bindable] 
      public var dm : LoginDM; 
      [Bindable] 
      public var fieldsValid : Boolean; 

      [MessageHandler(selector="isloggedin")] 
      public function loggedinHandler(e : Event) : void 
      { 
       TweenMax.to(this, 1, { autoAlpha:0 }); 
      } 

      private function onCreationComplete(event : FlexEvent) : void 
      { 
       setTimeout(checkLoginKey, 500); 

      } 

      private function showOrHide(show : Boolean) : void 
      { 
       var alpha_value : int; 
       var scaleXY : int = 1; 
       var newVertical : Number = 0; 
       if (show) 
       { 

        alpha_value = 1; 
       } 
       else 
       { 

       } 

       TweenMax.to(this, 0.25, { autoAlpha:alpha_value, verticalCenter:newVertical, ease:Quad.easeOut }); 
      } 

      private function checkLoginKey() : void 
      { 
       var loginEvent : LoginEvent = new LoginEvent(LoginEvent.CHECK_LOGIN_KEY); 
       dispatchEvent(loginEvent); 

       setTimeout(function() : void 
       { 
        BindingUtils.bindSetter(showOrHide, dm, "showview"); 
        BindingUtils.bindSetter(setDefaultSchoolSelection, dm, "lastSelectedSchool"); 
       }, 2000); 
      } 

      private function setDefaultSchoolSelection(schoolName : String) : void 
      { 
       if (schoolName != null) 
       { 
        for (var i: String in cb_schoollist.dataProvider) 
        { 
         var name : String = cb_schoollist.dataProvider.getItemAt(int(i)).Name; 

         if (schoolName == name) 
          cb_schoollist.selectedIndex = int(i); 
        } 
       } 
      } 
     ]]> 
    </fx:Script> 

    <fx:Metadata> 
     [Event(name="checkLoginKey", type="com.guhsd.academicnotifier.events.LoginEvent")] 
     [ManagedEvents("checkLoginKey")] 
    </fx:Metadata> 

    <s:Rect top="0" bottom="0" left="0" right="0" 
      topRightRadiusX="50" topRightRadiusY="50"> 
     <s:fill> 
      <s:LinearGradient> 
       <s:GradientEntry color="#667178"/> 
       <s:GradientEntry color="#8C9BA5"/> 
      </s:LinearGradient> 
     </s:fill> 
    </s:Rect> 
    <s:VGroup horizontalCenter="0" verticalAlign="middle" gap="0" 
       paddingTop="20" 
       paddingBottom="10" paddingLeft="50" 
       width="100%"> 
     <s:HGroup verticalAlign="middle" paddingLeft="40"> 
      <s:Label text="Academic and Disipline Referrals" 
        color="#FF9900" fontSize="20"/> 
      <mx:Spacer width="100%"/> 
      <s:Label color="#cb0000" text="{dm.error_message}" 
        width="250"/> 
     </s:HGroup> 
     <s:HGroup width="100%" paddingRight="100" paddingTop="10"> 
      <mx:Spacer width="100%"/> 
      <s:Form id="form"> 

       <s:FormItem label="Username"> 
        <s:TextInput id="tx_username" width="200" 
           text="{dm.user_name}" 
           enter="pm.login(tx_username.text, tx_password.text, cb_schoollist.selectedItem.Name);"/> 
       </s:FormItem> 
       <s:FormItem label="Password" 
          requiredIndicatorSource=""> 
        <!-- sf88fd --> 
        <s:TextInput id="tx_password" width="200" 
           text="" enter="pm.login(tx_username.text, tx_password.text, cb_schoollist.selectedItem.Name);" 
           displayAsPassword="true"/> 
       </s:FormItem> 
       <s:FormItem label="School"> 
        <s:DropDownList id="cb_schoollist" 
           dataProvider="{dm.school_list}" 
           labelField="Name" 
           selectedIndex="0" width="100%" 
           close="pm.setVPList(event.currentTarget.selectedItem)"/> 
       </s:FormItem> 
       <s:FormItem> 
        <s:HGroup width="200"> 
         <mx:Spacer width="100%"/> 
         <s:Button label="Cancel" click="pm.quit()"/> 
         <s:Button label="Login" click="{pm.login(tx_username.text, tx_password.text, cb_schoollist.selectedItem.Name);}"/> 
        </s:HGroup> 
       </s:FormItem> 
      </s:Form> 
     </s:HGroup> 
     <s:HGroup verticalAlign="middle" paddingLeft="40" paddingBottom="20"> 
      <view:Icon/> 
      <s:VGroup filters="{[ new DropShadowFilter() ]}" gap="0"> 
       <mx:Spacer height="10"/> 
       <s:Label text="GUHSD" color="#ffffff" fontSize="30"/> 
       <s:Label text="Academic Referrals" color="#ffffff" fontSize="25"/> 
      </s:VGroup> 
     </s:HGroup> 
    </s:VGroup> 

</s:Group> 

回答

0

它没有使用注射吗?

我不知道这是否是相关的,但我们在以前的版本解决了类似的问题,在做这样的事情:

combobox.dataProvider = Model.getInstance()数据; combobox.dropdown.dataProvider = Model.getInstance()。data;

它是SDK 3.5中Combobox的解决方法,但它可能是一个类似的问题。

+0

那么我解决了它,但从来没有真正弄清楚是什么问题。该视图位于主应用视图中,但在creationComplete之后,我创建了一个新的Spark窗口。一旦我停止将其添加到新的AIR窗口,并将主窗口应用程序中的长视图留下,问题就消失了。 – mattwallace