当选择任何项目时,AngularJS显示IE11中列表中的第一个项目

时间:2014-07-03 20:02:33

标签: javascript angularjs internet-explorer

当我选择不是列表中第一个的项目时,Windows 7/8上的IE11显示第一个。如果我重新选择,问题就会消失。它只在页面加载后发生一次。我还没有在旧版本的IE中测试过。

我也尝试使用旧版AngularJS的代码。相同的代码在Chrome中的行为与预期相同。

这是IE的问题还是有一个已知的解决方法?或者这是代码的问题吗?

HTML:

<!DOCTYPE html>
 <html ng-app="plunker">
<head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/2.2.9/angular.min.js"></script>
    <script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
    <select data-ng-model="selecteditem" data-ng-options="item for item in items"></select>
</body>
</html>

JS:

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.items = ['item1', 'item2', 'item3'];
  $scope.selecteditem = "";
});

设置所选项目值似乎不适用于对象数组。

<!DOCTYPE html>
 <html ng-app="plunker">
<head>
    <meta charset="utf-8" />
    <title>AngularJS Plunker</title>
    <script src="//ajax.googleapis.com/ajax/libs/angularjs/1.2.9/angular.min.js"></script>
    <script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
    <select data-ng-model="selecteditem" data-ng-options="item.name for item in items"></select>
</body>
</html>

JS

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope) {
  $scope.items = [{name:'item1'}, {name:'item2'}, {name:'item3'}];
  $scope.selecteditem = {name:'item1'};
});

以下是行为http://plnkr.co/edit/ojAhTP50iHS030tezhQ3

的显示

1 个答案:

答案 0 :(得分:2)

请问您的解决方案,请见她:http://plnkr.co/edit/imjLXBmGpZReZ63KNWlg?p=preview

<select data-ng-model="selecteditem" data-ng-options="item for item in items">
          <option style="display:none" value=""></option>

        </select>

如果您想使用对象数组,则需要通过引用同一对象来初始化所选选项

app.controller('MainCtrl', function($scope) {
  $scope.items = [{name:'item1'}, {name:'item2'}, {name:'item3'}];
  $scope.selecteditem = $scope.items[0];
});

请参阅plnkr