Select ng-options 中的一个选项不适用于 jQuery
Select an Option in ng-options Not working with jQuery
我正在尝试 select ng-options 中的一个选项,使用 jquery 基于基于变量中的文本生成的选项标签。
$scope.storedDay = 'Today';
<select id="selectedDay" name="selectedDay" class="form-control" ng-model="selectedDay" ng-options="day.text for day in days"></select>
$('#selectedDay option[label="' + $scope.storedDay + '"]').prop('selected', true);
生成HTML
<select id="selectedDay" name="selectedDay" class="form-control ng-pristine ng-untouched ng-valid" ng-model="selectedDay" ng-options="day.text for day in days" tabindex="0" aria-invalid="false">
<option value="?" selected="selected"></option>
<option value="object:35" label="Today">Today</option>
<option value="object:36" label="Tomorrow">Tomorrow</option>
<option value="object:37" label="Sunday">Sunday</option>
</select>
它永远不会 selected。即使我在标签文本中硬编码。
您可以使用 angular 的 jqLite 遍历选项并比较它们的标签来执行此操作,请参阅以下工作 fiddle:
//Iterate over options
for (var i = 0; i < angular.element(document.querySelector('#selectedDay').children).length; i++) {
if (angular.element(document.querySelector('#selectedDay').children[i]).attr('label') == $scope.storedDay) {
//Set selected option in ng-model
$scope.selectedDay = angular.element(document.querySelector('#selectedDay').children[i]).attr('value');
}
}
我只需要在 ng-options = FAIL 中添加 track by day.text
:}
我正在尝试 select ng-options 中的一个选项,使用 jquery 基于基于变量中的文本生成的选项标签。
$scope.storedDay = 'Today';
<select id="selectedDay" name="selectedDay" class="form-control" ng-model="selectedDay" ng-options="day.text for day in days"></select>
$('#selectedDay option[label="' + $scope.storedDay + '"]').prop('selected', true);
生成HTML
<select id="selectedDay" name="selectedDay" class="form-control ng-pristine ng-untouched ng-valid" ng-model="selectedDay" ng-options="day.text for day in days" tabindex="0" aria-invalid="false">
<option value="?" selected="selected"></option>
<option value="object:35" label="Today">Today</option>
<option value="object:36" label="Tomorrow">Tomorrow</option>
<option value="object:37" label="Sunday">Sunday</option>
</select>
它永远不会 selected。即使我在标签文本中硬编码。
您可以使用 angular 的 jqLite 遍历选项并比较它们的标签来执行此操作,请参阅以下工作 fiddle:
//Iterate over options
for (var i = 0; i < angular.element(document.querySelector('#selectedDay').children).length; i++) {
if (angular.element(document.querySelector('#selectedDay').children[i]).attr('label') == $scope.storedDay) {
//Set selected option in ng-model
$scope.selectedDay = angular.element(document.querySelector('#selectedDay').children[i]).attr('value');
}
}
我只需要在 ng-options = FAIL 中添加 track by day.text
:}