Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs IE10带有select using ng选项且在模型中未设置默认值时,始终选择下拉列表中的第一个元素_Angularjs_Select_Internet Explorer 10 - Fatal编程技术网

Angularjs IE10带有select using ng选项且在模型中未设置默认值时,始终选择下拉列表中的第一个元素

Angularjs IE10带有select using ng选项且在模型中未设置默认值时,始终选择下拉列表中的第一个元素,angularjs,select,internet-explorer-10,Angularjs,Select,Internet Explorer 10,我使用的是Angular v1.0.8 我有一个select,我正在使用ng options指令用控制器中声明的数据数组填充它 HTML代码段 <body ng-controller="SelectCtrl"> <select ng-model="selected" ng-options="o as o.caption for o in options" /> </body> 在Chrome中,如果您选择了选项3,那么正如预期的那样,

我使用的是Angular v1.0.8

我有一个select,我正在使用ng options指令用控制器中声明的数据数组填充它

HTML代码段

<body ng-controller="SelectCtrl">
  <select 
    ng-model="selected" 
    ng-options="o as o.caption for o in options" />
</body>
在Chrome中,如果您选择了选项
3
,那么正如预期的那样,它会被选中

然而,在IE10中,如果您选择选项
3
,则会选择选项
1

()

只有在控制器中没有设置默认选择时,才会发生这种情况。删除“空白”选项后所做的后续选择将正确设置

我怀疑它可能是一个复制品,但我不能完全肯定。我并不是在动态地改变这里的选项,尽管我想可能是因为“空白”选项在两个浏览器中都被删除了

然而,我确实想要这个功能。我不想为此选择提供默认值,因为用户需要为我进行活动选择


有人知道这方面的解决方法和/或解决方案吗?最好是不涉及使用JQuery处理选项的选项…

angular添加的空白项有一些奇怪的行为。我们绕过它的方法是显式地添加我们自己的空白项,并通过控制器选择它:

angular.module('app', []).controller('SelectCtrl', ['$scope', function($scope) {

  $scope.options = [
    { key: 0, caption: ' ' },
    { key: 1, caption: '1' },
    { key: 2, caption: '2' },
    { key: 3, caption: '3' },
    { key: 4, caption: '4' },
    { key: 5, caption: '5' }
  ];

  $scope.selected = $scope.options[0]

}]);

我通过在select中添加以下默认选项来解决这个问题

<option value="">Pls select</option>
请选择
因此,您的选择将如下所示:

<body ng-controller="SelectCtrl">
<select 
  ng-model="selected" 
  ng-options="o as o.caption for o in options">
    <option value="">Pls select</option>
</select>  

请选择

我在IE11,10,9中测试了这个,它似乎是有效的。 请让我知道它是否也适合你


我认为这比上面的解决方案更干净。

我担心我不得不这样做。很高兴知道我不是唯一一个这样做的人,至少:)如果您的默认选项值不需要插值(即“请选择”有效,{{Please select'}}}”不需要插值,那么这在IE9和IE10中有效。Phil Sandler的解决方案是在数组中预先设置一个空选项,在这种情况下,它似乎可以完成任务。
<body ng-controller="SelectCtrl">
<select 
  ng-model="selected" 
  ng-options="o as o.caption for o in options">
    <option value="">Pls select</option>
</select>