Angular选择的选项忽略第一个数组值

时间:2016-08-05 21:48:56

标签: javascript angularjs

我正在尝试使用localStorage来记住用户的选择,并在下次登录时相应地设置所选选项。

select选项正确填充,如下所示。

populated options

当索引为1或更高时,它可以正常工作,但每当选择第一个值时,默认情况下在下次重新加载时不会选择任何值。

我在下面说明了这一点:

加载时0的索引 Index is 0

加载时1的索引 Index is 1

我做错了什么?

HTML

<select name="ipSelect" data-ng-model="selectedOption">
    <option ng-repeat="ip in adapters track by $index" data-ng-value="adapters.indexOf(ip)">{{ip}}</option>
 </select>

在控制器中

ipcRenderer.on('device_ips_loaded', (event, adapters) => {
    let storedIndex = localStorage.getItem('defaultIp') || 0
    console.log('Adapters: ' + adapters)
    console.log('storedIndex: ' + storedIndex)
    $scope.adapters = adapters
    $scope.$apply(function() {
        $scope.selectedOption = adapters[storedIndex]
    })
    console.log('selectedOption: ' + $scope.selectedOption)
})

1 个答案:

答案 0 :(得分:1)

我建议您使用ngOptions

查看工作

<!DOCTYPE html>
<html ng-app="app">

<head>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.8/angular.min.js"></script>
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css">
</head>

<body ng-controller="MainCtrl">
  <div class="col-md-12">
    <select class="form-control" ng-options="key as ip for (key, ip) in adapters" ng-model="selectedOption">
      <option value label="Select an adapter" hidden></option>
    </select>
    <pre ng-bind="selectedOption"></pre>
  </div>
</body>

</html>
{{1}}