javascript - 无法使用 ng-option 选择数组的最后一个值

标签 javascript angularjs ng-options

我用 Angular 定义了这个选择框

<select data-ng-model="data.hours" data-ng-options="value for value in range.hours" class="dateSelect"></select>
<select data-ng-model="data.minutes" data-ng-options="value for value in range.minutes" class="dateSelect"></select>
<select data-ng-model="data.period" data-ng-options="value for value in range.period" class="dateSelect"></select>

和 Controller 定义默认值:

$scope.data.hours = currentHours > 12 ? parseInt($scope.range.hours[currentHours - 13]) : parseInt($scope.range.hours[currentHours -1]);
$scope.data.minutes = parseInt(date.getMinutes());
$scope.data.period = currentHours> 12 ? 'PM' : 'AM';

我的默认值数组:

$scope.range.hours = [1,....,12];
$scope.range.minutes = [0,....,59];
$scope.range.period = ['AM','PM'];

一切正常,除非我要选择的默认值是每个数组中的最后一个 所以如果我想要:11 小时 58 分钟,AM 它工作正常并且选择中的元素对用户可见。 如果我想要:12 小时 59 分钟,PM 盒子是空的,当我检查元素时我得到这个:

<option value="? string:PM ?"></option>

似乎无法弄清楚问题是什么......

编辑:范围周期数组上的拼写错误。

EDIT2:在尝试了我能想到的一切之后,决定将范围更改为对象数组。 它们是这样定义的:

range.period = [{label:"AM",value:"AM"},{label:"PM",value:"PM"}];

标记也发生了变化:

<select data-ng-model="data.period" data-ng-options="opt as opt.label for opt in range.period" class="dateSelect"></select>

模型是这样设置的:

$scope.data.period = currentHours> 12 ? $scope.range.period[1] : $scope.range.period[0];

由于我将整个对象传递给数据,因此我需要在将数据对象提交给后端之前添加一个变通方法,这样它只会传递选定的值。

$scope.data.period = $scope.data.period.value;

这是一个糟糕的解决方案,但这是我能做的最好的解决方案。希望我能找到以前的实现有什么问题(现在只是想知道,出于好奇。) 希望这对遇到同样问题的人有所帮助。

最佳答案

您缺少引号,这可能会破坏您的代码:

$scope.range.period = ['AM','PM'];

关于javascript - 无法使用 ng-option 选择数组的最后一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26678910/

相关文章:

javascript - 如何使用 angularjs 更改另一个选择标签的值?

javascript - 如何在 Angular 1.4 及更高版本的 ng-options 中使用 ng-class

javascript - ngOptions 二级对象显示

javascript - 使用 React 在两个 div 中显示提交的文本

javascript - 运行随机数并保持状态

javascript - Angularjs $window.open 弹出窗口被阻止

angularjs - 如何设置选择选项的value属性?

javascript - Appendchild 仅适用于最后一个元素

android - Android 的人行横道浏览器抛出 “Only secure origins are allowed” 错误

java - 如何用angularjs显示 Controller 返回的jsp页面