给定一个包含一些options元素的HTML文档, 任务是使用angularJS中的ng-repeat动态添加多个选择的javascript对象数组。
方法:该任务是使用ng-repeat遍历数组完成的。我们称这个数组"楷模"。 DOM中存在的每个选择菜单都将根据其在数组中的特定索引进行建模。例如2nd选择菜单将模仿2nd模型的对象数组中的对象。要向DOM添加更多选择菜单, 我们只需要将一个空对象推入模型的数组即可, ng-repeat指令负责其余的复制。下面我们逐渐为ng-repeat指令中的多项选择添加动态选项。
示例1:在此示例中, 我们将添加多个选择并显示所选数据。
<
!DOCTYPE html>
<
html ng-app = "gfg">
<
head>
<
meta charset = "utf-8" />
<
script data-require = "angular.js@1.5.x"
src =
"https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js"
data-semver = "1.5.11">
<
/script>
<
script>
var app = angular.module('gfg', []);
app.controller('MainCtrl', function($scope) {
$scope.models = [{}];
$scope.countries = ['India', 'Japan', 'US'];
$scope.states = {
India: ['UP', 'MP', 'Bihar'], Japan: ['Tokyo', 'Yokohama'], US: ['California', 'Texas'], }
$scope.addRow = function() {
$scope.models.push({});
}
$scope.getState = function(country) {
return $scope.states[country];
}
});
<
/script>
<
/head>
<
body ng-controller = "MainCtrl">
<
center>
<
h1 style = "color: green;
">
lsbin
<
/h1>
<
table>
<
tr>
<
th>
Country<
/th>
<
th>
State<
/th>
<
th>
Action<
/th>
<
/tr>
<
tr ng-repeat = "model in models">
<
td>
<
select ng-options =
"country as country for country in countries"
ng-model = "model.country"
ng-change = 'getState(model.country)'>
<
/select>
<
/td>
<
td>
<
select ng-options =
"state as state for state in getState(model.country)"
ng-model = "model.state">
<
/select>
<
/td>
<
td>
<
button ng-click = "addRow()">
Add Row<
/button>
<
/td>
<
/tr>
<
/table>
<
h3 style = "color:green">
Selections<
/h3>
<
p ng-repeat = "model in models">
{{model.country}} - {{model.state}}
<
/p>
<
/center>
<
/body>
<
/html>
输出如下:
所有数据已成功添加到对象数组。
文章图片
示例2:在此示例中, 我们预填充了模型数组。
<
!DOCTYPE html>
<
html ng-app = "gfg">
<
head>
<
meta charset = "utf-8" />
<
script data-require = "angular.js@1.5.x"
src =
"https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.5.11/angular.min.js"
data-semver = "1.5.11">
<
/script>
<
script>
var app = angular.module('gfg', []);
//Prepopulate the models array here
app.controller('MainCtrl', function($scope) {
$scope.models = [{
country: 'India', state: 'UP'
}];
$scope.countries = ['India', 'Japan', 'US'];
$scope.states = {
India: ['UP', 'MP', 'Bihar'], Japan: ['Tokyo', 'Yokohama'], US: ['California', 'Texas'], }
$scope.addRow = function() {
$scope.models.push({});
}
$scope.getState = function(country) {
return $scope.states[country];
}
});
<
/script>
<
/head>
<
body ng-controller = "MainCtrl">
<
center>
<
h1 style = "color: green;
">
lsbin
<
/h1>
<
table>
<
tr>
<
th>
Country<
/th>
<
th>
State<
/th>
<
th>
Action<
/th>
<
/tr>
<
tr ng-repeat = "model in models">
<
td>
<
select ng-options =
"country as country for country in countries"
ng-model = "model.country"
ng-change = 'getState(model.country)'>
<
/select>
<
/td>
<
td>
<
select ng-options =
"state as state for state in getState(model.country)"
ng-model = "model.state">
<
/select>
<
/td>
<
td>
<
button ng-click = "addRow()">
Add Row<
/button>
<
/td>
<
/tr>
<
/table>
<
h3 style = "color:green">
Selections<
/h3>
<
p ng-repeat = "model in models">
{{model.country}} - {{model.state}}
<
/p>
<
/center>
<
/body>
<
/html>
输出如下:
【如何为ng-repeat指令中的多项选择添加动态选项()】我们看到页面现在总是包含国家"India", 并在页面加载时预先填充国家" UP"。
文章图片
推荐阅读
- 算法题(在只有3和4的数字系统中查找第n个数字)
- 亚马逊面试体验| 2020年SDE-1 FTE校园
- Python使用youtube_dl模块下载视频
- PHP Ds\Dequealloc()函数用法示例
- 本图文详细教程教你像手机一样让你的windows10锁屏
- 2017一键安装win10系统安装图文详细教程
- 本图文详细教程教你windows10设置,你看懂了吗?
- 本图文详细教程教你如何让win10的桌面显示默认图标
- 安装系统 本图文详细教程教你2017最简易win10重装系统办法