2015-10-09 109 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>