我有2个select语句,第一个选择由我的第一个webservice请求填充。用户在第一个选择中选择所需数据,其中将触发onChange方法以检索第一个选择对象,再次运行webservice以检索另一组数据并填充第二个选择语句。
HTML:
<div class="input-label">
Select Kittens:
</div>
<select
ng-model ="options"
ng-options ="option.name for option in options"
ng-change="onChange(options)">
<option>--</option>
</select>
<br>
<div class="input-label">
Select Age:
</div>
<select
ng-options ="detail.age for detail in details">
<option>--</option>
</select>
控制器:
.controller("ctrl",['$scope',function($scope){
$scope.options = [
{id:1, name:'typeA'},
{id:2, name:'typeB'},
{id:3, name:'typeC'},
{id:4, name:'typeD'}
]
$scope.onChange = function(item){
console.log("Hi world!");
console.log(item);
$scope.details = [
{id:1, age:'11'},
{id:2, age:'10'},
{id:3, age:'9'},
{id:4, age:'6'}
]
};
}])
的问题:
1)选择第一个选择后,该值将从选择框中消失,但值(对象)将成功传递给onChange函数
2)无法填充第二个选择框
我创建了一个plunkr来复制我的问题(没有webservice)。谢谢!
答案 0 :(得分:2)
使用此代码:DEMO
<div class="input-label">
Select Kittens:
</div>
<select ng-model="name" ng-options="option.name for option in options" ng-change="onChange(name)">
<option>--</option>
</select>
<br>
<div class="input-label">
Select Age:
</div>
<select ng-model ="age" ng-options="detail.age for detail in details">
<option>--</option>
</select>
您的第一个ng-model = "options"
但内部控制器的名称,您还使用$scope.options
作为对象数组。
此外,在第二个<select>
中,没有ng-model
。但ng-options
需要ng-model
。
答案 1 :(得分:1)
select指令与
ngModel
一起使用 范围与<select>
控件之间的数据绑定(包括 设置默认值。)
此外,您需要更改第一次选择ng-model
ng-repeat
options
ng-model
和options
也与someOpetion
相同,应更改到<select ng-model="someOpetion" ng-options="option.name for option in options" ng-change="onChange(options)">
<option>--</option>
</select>
<br>
<div class="input-label">
Select Age:
</div>
<select ng-options="detail.age for detail in details" ng-model="someDetails">
<option>--</option>
</select>
<强>标记强>
{{1}}
答案 2 :(得分:1)
我遇到了你的问题。
以下是您的plunker的固定版本
您需要在控制器中添加两个scope
变量,才能将这些变量用作ng-model
。
第二次选择的问题是它没有ng-model
属性。选择必须具有ng-model
属性。