2015-10-09 107 views
0

我在我的AngularJS應用程序中有一個表單,其中包含帶默認選項的下拉列表。我使用ng-init和ng-selected來實現這一點。它在Chrome中運行良好,但在Internet Explorer 9中,當我第一次加載頁面時,下拉列表中顯示的是文字angularjs表達式,即「{{showMethod(args)}}」。當我去改變選項時,選項就在那裏。這只是最初的表達不表達。AngularJS默認選項中選擇不工作在IE9

這裏是我的HTML代碼:

<td> 
    <div ng-if="var.methods.length==0">NA</div> 
    <div ng-if="var.methods.length>0"> 
     <select ng-init="selectedmethods[var.id]=defaultMethod(var.id,var.methods)" ng-model="selectedmethods[var.id]" > 
      <option ng-repeat="method in var.methods" value="{{method.id}}" ng-selected="isMethodSelected(var.id,method)">{{ showMethod(method,var.id)}}</option> 
     </select> 
    </div> 

這又是一個NG重複的部分。
最初,我使用ng-init將所選方法設置爲該變量的默認方法。使用ng-selected和一個名爲isMethodSelected的方法,我通過檢查selectedmethods對象來檢查用戶是否選擇了該方法,如果不是,請檢查該方法是否爲默認方法。 然後,我使用showMethod函數顯示方法名稱,我添加了它來查看這是否有助於IE中的問題(它沒有)。我之前所做的只是表達式method.formattedMethodName。

這裏是我的JS代碼部分:

$scope.isMethodSelected = function(varid,method) { 
     var sel = false; 
     if($scope.request.specsByVar.hasOwnProperty(varid) && $scope.request.specsByVar[varid].method.id==method.id) { 
      sel = true; 
     } else if(!$scope.request.specsByVar.hasOwnProperty(varid) && method.defaultMethod) { 
      sel = true; 
     } 
     return sel; 
    } 

    $scope.defaultMethod = function(varid,methods) { 
     var defaultMethod; 
     if($scope.request.specsByVar.hasOwnProperty(varid)) { 
      defaultMethod = $scope.request.specsByVar[varid].method.id; 
     } else { 
      for (var i = 0; i < methods.length; i++) { 
       if(methods[i].defaultMethod) { 
        defaultMethod = methods[i].id; 
        break; 
       } 
      } 
     } 
     return defaultMethod; 
    } 

    $scope.showMethod = function(method,varid) { 
     if(method) { 
      return method.formattedMethodName; 
     } else { 
      return $scope.selectedmethods[varid].formattedMethodName; 
     } 
    }; 

這顯然是一個IE瀏覽器的問題。有沒有人有辦法解決嗎?

感謝, 奧爾加

回答

0

我能夠用NG選項來解決這個問題:

<select ng-init="selectedmethods[var.id]=defaultMethod(var.id,var.methods)" 
     ng-model="selectedmethods[var.id]" title="{{ selectedmethods[var.id].formula }}" 
     ng-options="method.id as method.formattedMethodName for method in var.methods | filter:{active:true}"> 

    </select>