AngularJs - 选项 object.object
AngularJs - ng-options object.object
我在 angularjs 中的 select 框中显示国家和城市,工作正常。 ng-model of country 在我调用 {{country}} 时显示输出。然而,城市的 ng-model 不能被称为 {{city}} 及其模态名称。我想将其称为 {{city}} 而不是 {{city.city}}。请注意,两个 select 框都工作正常,但无法显示城市模式 {{city}}
否则,当我通过 ng-repeat 而不是 ng-options
select country 时,我可以获得城市结果吗?
<select name="Country" ng-model="country" class="item item-input item-select major" required>
<option value=""> Select a Country </option>
<option ng-repeat="country in countries" value="{{country.iso_code_3}}">{{country.name}}</option>
</select>
<select name="City" ng-model="city" data-ng-options="city.name for city in cities| filter:{CountryCode: country}:true" class="item item-input item-select major" required>
<option value="">-- Select a City --</option>
</select>
从可靠的国家/地区下拉列表框中选中此link
更改下面的HTML代码
<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="CountriesController">
<select ng-model="country" data-ng-options="country.name for country in countries" ng-change="updateCountry()">
<option value="">Select country</option>
</select>
<br>
<select ng-model="state" ng-options="state.name for state in availableStates">
<option value="">Select state</option>
</select>
<br>
Selected Country: {{country}}
<br>
Selected State: {{state}}
</body>
</html>
script.js
var app = angular.module("app", []);
function CountriesController($scope) {
$scope.countries = [{
"name": "USA",
"id": 1
},{
"name": "Canada",
"id": 2
}];
$scope.states = [{
"name": "Alabama",
"id": 1,
"countryId": 1
}, {
"name": "Alaska",
"id": 2,
"countryId": 1
}, {
"name": "Arizona",
"id": 3,
"countryId": 1
}, {
"name": "Alberta",
"id": 4,
"countryId": 2
}, {
"name": "British columbia",
"id": 5,
"countryId": 2
}];
$scope.updateCountry = function(){
$scope.availableStates = [];
angular.forEach($scope.states, function(value){
if(value.countryId == $scope.country.id){
$scope.availableStates.push(value);
}
});
}
}
单击此 Demo 示例
Html代码供参考:
<html ng-app="myapp">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link href="style.css" rel="stylesheet" />
<script data-semver="1.5.8" src="https://code.angularjs.org/1.5.8/angular.js" data-require="angular.js@1.5.x"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<select ng-model="country" data-ng-options="country for country in countries" ng-change="countryChange()">
<option value="">Select country</option>
</select>
<br>
<select ng-model="state" ng-options="state for state in allStates">
<option value="">Select state</option>
</select>
<br>
Country: {{country}}
<br>
State: {{state}}
</body>
</html>
JS代码供参考:
var app = angular.module('myapp', []);
app.controller('MainCtrl', function($scope) {
$scope.countries = ["USA","Canada"];
$scope.states = [{
"name": "Alabama",
"countryId": "USA"
}, {
"name": "Alaska",
"countryId": "USA"
}, {
"name": "Arizona",
"countryId": "USA"
}, {
"name": "Alberta",
"countryId": "Canada"
}, {
"name": "British columbia",
"countryId": "Canada"
}];
$scope.countryChange = function(){
$scope.allStates = [];
angular.forEach($scope.states, function(value){
if($scope.country == value.countryId){
$scope.allStates.push(value.name);
}
});
}
});
我在 angularjs 中的 select 框中显示国家和城市,工作正常。 ng-model of country 在我调用 {{country}} 时显示输出。然而,城市的 ng-model 不能被称为 {{city}} 及其模态名称。我想将其称为 {{city}} 而不是 {{city.city}}。请注意,两个 select 框都工作正常,但无法显示城市模式 {{city}}
否则,当我通过 ng-repeat 而不是 ng-options
select country 时,我可以获得城市结果吗?<select name="Country" ng-model="country" class="item item-input item-select major" required>
<option value=""> Select a Country </option>
<option ng-repeat="country in countries" value="{{country.iso_code_3}}">{{country.name}}</option>
</select>
<select name="City" ng-model="city" data-ng-options="city.name for city in cities| filter:{CountryCode: country}:true" class="item item-input item-select major" required>
<option value="">-- Select a City --</option>
</select>
从可靠的国家/地区下拉列表框中选中此link
更改下面的HTML代码
<html ng-app="app">
<head>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.1.5/angular.js"></script>
<link rel="stylesheet" href="style.css" />
<script src="script.js"></script>
</head>
<body ng-controller="CountriesController">
<select ng-model="country" data-ng-options="country.name for country in countries" ng-change="updateCountry()">
<option value="">Select country</option>
</select>
<br>
<select ng-model="state" ng-options="state.name for state in availableStates">
<option value="">Select state</option>
</select>
<br>
Selected Country: {{country}}
<br>
Selected State: {{state}}
</body>
</html>
script.js
var app = angular.module("app", []);
function CountriesController($scope) {
$scope.countries = [{
"name": "USA",
"id": 1
},{
"name": "Canada",
"id": 2
}];
$scope.states = [{
"name": "Alabama",
"id": 1,
"countryId": 1
}, {
"name": "Alaska",
"id": 2,
"countryId": 1
}, {
"name": "Arizona",
"id": 3,
"countryId": 1
}, {
"name": "Alberta",
"id": 4,
"countryId": 2
}, {
"name": "British columbia",
"id": 5,
"countryId": 2
}];
$scope.updateCountry = function(){
$scope.availableStates = [];
angular.forEach($scope.states, function(value){
if(value.countryId == $scope.country.id){
$scope.availableStates.push(value);
}
});
}
}
单击此 Demo 示例
Html代码供参考:
<html ng-app="myapp">
<head>
<meta charset="utf-8" />
<title>AngularJS Plunker</title>
<script>document.write('<base href="' + document.location + '" />');</script>
<link href="style.css" rel="stylesheet" />
<script data-semver="1.5.8" src="https://code.angularjs.org/1.5.8/angular.js" data-require="angular.js@1.5.x"></script>
<script src="app.js"></script>
</head>
<body ng-controller="MainCtrl">
<select ng-model="country" data-ng-options="country for country in countries" ng-change="countryChange()">
<option value="">Select country</option>
</select>
<br>
<select ng-model="state" ng-options="state for state in allStates">
<option value="">Select state</option>
</select>
<br>
Country: {{country}}
<br>
State: {{state}}
</body>
</html>
JS代码供参考:
var app = angular.module('myapp', []);
app.controller('MainCtrl', function($scope) {
$scope.countries = ["USA","Canada"];
$scope.states = [{
"name": "Alabama",
"countryId": "USA"
}, {
"name": "Alaska",
"countryId": "USA"
}, {
"name": "Arizona",
"countryId": "USA"
}, {
"name": "Alberta",
"countryId": "Canada"
}, {
"name": "British columbia",
"countryId": "Canada"
}];
$scope.countryChange = function(){
$scope.allStates = [];
angular.forEach($scope.states, function(value){
if($scope.country == value.countryId){
$scope.allStates.push(value.name);
}
});
}
});