我的第一个下拉列表在页面加载时正确加载,但是从localstorage第一个下拉列表后加载子下拉列表。问题是当我加载第二个下拉列表并为其分配默认值时,我无法再更改其值。 http://jsfiddle.net/silvajeff/x2nrX/3/
angular.module('demoApp', []).controller('DemoController', function($scope) {
//my first drop down loads with the page
$scope.options = [
{ label: 'one', value: 1 },
{ label: 'two', value: 2 },
{ label: 'three', value: 3 },
{ label: 'four', value: 4 },
{ label: 'five', value: 5 }
];
$scope.firstSelect = $scope.options[3];
//the second drop down loads after the first makes a selection. In the real code I am populating the second from localstorage, but once it's assigned its default value I cannot change it.
var init = function(){
//depends on what was selected in first select
$scope.captions = [
{ name: 'A', value: 'a' },
{ name: 'B', value: 'b' },
{ name: 'C', value: 'c' },
{ name: 'D', value: 'd' },
{ name: 'E', value: 'e' }
];
$scope.secondSelect = $scope.captions[1];
}
init();
});
答案 0 :(得分:1)
请更改ng-if for ng-show,第二个下拉列表将有效http://jsfiddle.net/Wc4CQ/
<body ng-app="demoApp">
<div ng-controller="DemoController">
<div>
<select ng-model="firstSelect"
ng-options="opt as opt.label for opt in options">
</select>
<br><br>
<select ng-show="firstSelect.value == '4'" ng-model="secondSelect"
ng-options="opt as opt.name for opt in captions">
</select><br>
The first select value is {{ firstSelect.value }}<br>
Why can't I get the second select value to update: {{ secondSelect.value }}
</div>
</div>
</body>
或者如果您必须使用,请参阅此处:http://jsfiddle.net/y5Bvv/
<body ng-app="demoApp">
<div ng-controller="DemoController">
<div>
<select ng-model="firstSelect" ng-options="opt as opt.label for opt in options"></select>
<br>
<br>
<select ng-if="firstSelect.value == '4'" ng-model="secondSelect.select" ng-options="opt as opt.name for opt in captions"></select>
<br>The first select value is {{ firstSelect.value }}
<br>Why can't I get the second select value to update: {{ secondSelect.select.value }}</div>
</div>
</body>
JS:
angular.module('demoApp', []).controller('DemoController', function ($scope) {
//my first drop down loads with the page
$scope.options = [{
label: 'one',
value: 1
}, {
label: 'two',
value: 2
}, {
label: 'three',
value: 3
}, {
label: 'four',
value: 4
}, {
label: 'five',
value: 5
}];
$scope.firstSelect = $scope.options[3];
//the second drop down loads after the first makes a selection. In the real code I am populating the second from localstorage, but once it's assigned its default value I cannot change it.
var init = function () {
//depends on what was selected in first select
$scope.captions = [{
name: 'A',
value: 'a'
}, {
name: 'B',
value: 'b'
}, {
name: 'C',
value: 'c'
}, {
name: 'D',
value: 'd'
}, {
name: 'E',
value: 'e'
}];
$scope.secondSelect = {};
$scope.secondSelect.select = $scope.captions[1];
}
init();
});