使用 URL 填充下拉菜单
Populating dropdown menus with URL
我遇到了一个非常棘手的问题。我的 Angular UI 为用户提供了 3 个下拉菜单,第三个菜单是基于前两个菜单的动态菜单。这工作正常。我还有一个映射到 3 个下拉菜单的动态 URL,以便浏览器可以自动填充它们。例如,如果浏览器 URL 是"/home?selectedLetter=A&selectedNumber=2&selectedColor=7891",那么在我将此 URL 粘贴到新选项卡中后,下拉列表应自动设置为 A、2 和黑色(对应于数组中的 7891)。
但是,只有 selectedLetter 和 selectedColor 下拉列表按预期填充,selectedColor 为空(调试后我发现这是因为从未调用 setColorSelection() .前两个菜单中的 ng-change() 调用永远不会触发)。浏览器肯定知道 selectedColor 是 7891,但只是没有在 UI 中显示它。即使我可以显示它,如何在菜单中将其转换为"黑色"?我似乎无法解决这个问题。有什么想法吗?
.HTML:
<select ng-model="selectedLetter"
ng-change="setColorSelection()"
ng-options="letter as letter for letter in letters">
</select>
<select ng-model="selectedNumber"
ng-change="setColorSelection()"
ng-options="number as number for number in numbers">
</select>
<select ng-model="selectedColor"
ng-options="color.ID as color.colorName for color in colorSelection">
</select>
角度内部控制器:
$scope.letters = ['A', 'B'];
$scope.numbers = ['1', '2'];
var colors = { // Note that all IDs are unique
'A1': [{"colorName": "Red", "ID": "1001"}, {"colorName": "Pink", "ID": "3002"}],
'A2': [{"colorName": "Blue", "ID": "9022"}, {"colorName": "Black", "ID": "7891"}],
'B1': [{"colorName": "Yellow", "ID": "5436"}, {"colorName": "Orange", "ID": "4444"}]
};
$scope.colorSelection = [];
// This populates selectedLetter and selectedNumber, doesn't work for selectedColor
var params = $location.search()
if (params.selectedLetter) {
$scope.selectedLetter = params.selectedLetter;
}
if (params.selectedNumber) {
$scope.selectedNumber = params.selectedNumber;
}
if (params.selectedColor) {
$scope.selectedColor = params.selectedColor;
}
$scope.setColorSelection = function() {
if ($scope.selectedLetter && $scope.selectedNumber) {
$scope.colorSelection = colors[$scope.selectedLetter + $scope.selectedNumber];
}
}
仅当选择框的值更改时,才会触发ng-change
。因此,请尝试使用:
if (params.selectedColor) {
if ($scope.selectedLetter && $scope.selectedNumber) {
$scope.colorSelection = colors[$scope.selectedLetter + $scope.selectedNumber];
}
$scope.selectedColor = params.selectedColor;
}
以便在设置模型之前准备好colorSelection
。
相关文章:
- 动态填充两个下拉菜单
- 如何将CSS(特别是填充/边距)应用于select下拉菜单的选项或optgroup
- '使用文本区域中的字符串动态填充下拉菜单
- 使用 URL 填充下拉菜单
- 从数据库填充的下拉菜单中更新输入字段
- 在CSS3中的Select Tag(下拉菜单)中向左填充
- AngularJS-用下拉菜单填充输入文本字段
- 使用带有数据库信息的下拉菜单填充文本框
- 如何从自动填充随机数字的下拉菜单中生成一组文本框
- 通过 JavaScript 函数填充 HTML 下拉菜单
- 如何使用 json 数组填充 Rails 下拉菜单
- 基于表单输入值,如何 2 生成选择 4 下拉菜单 w 数据库中的行/记录数据,该数据库将在选择时预填充表单
- 如何为下拉菜单生成选择,其中包含数据库中的行/记录数据,该数据库将在选择时预填充表单
- 将数据加载到动态填充的分部视图中的选择下拉菜单
- 如何生成下拉菜单选择以根据数据库中可用的行/记录表单数据填充表单
- 下拉菜单动态填充第二个下拉菜单
- HTML 3 依赖的下拉菜单按文本文件填充
- DHTMLX网格:用下拉菜单填充单元格
- 根据下拉菜单填充输入表
- 从下拉菜单填充引导表单