【发布时间】:2015-04-20 01:06:22
【问题描述】:
我已经使用 angularjs 成功设置了一个依赖下拉列表,但我有一个小问题:
我需要定义每个选项标签的值,因为它是由角度处理器自动设置的。
这是我的 html 代码:
<div ng-controller="CountryCntrl">
<select id="country" ng-model="states" ng-options="country for (country, states) in countries">
<option value=''>Choose</option>
</select>
Departement:
<select id="state" ng-disabled="!states">
<option value="">Choose</option>
<option ng-repeat="state in states" value="{{state.id}}">{{state.dep}}</option>
</select>
</div>
<br/>
<input type="submit" value="go">
这是我的 angularjs 代码:
<script>
var Aplic = angular.module("Aplic", []);
Aplic.controller('CountryCntrl', function($scope){
$scope.countries = {
'Aquitaine': [ {'id':'22', 'dep': "Dordogne"}, { 'id':'31', 'dep' : "Gironde"} ],
'Auvergne': [ {'id' : '3', 'dep' : "Allier"}, {'id' : '15', 'dep' : "Cantal"} ]
};
});
</script>
我再说一遍,我已经成功地在第二个下拉列表中设置了选项的值,但是对于第一个下拉列表,它会自动使用变量国家的名称。
那么我应该如何更改我的代码,以便为第一个下拉菜单中的每个选项标签指定一个特定值。
为了更好地理解我的想法,请检查每个下拉列表中的值。这是我在 plunker 上工作的 sn-p:
http://embed.plnkr.co/VBdxGDQNOJSHeGVfloo2/preview
任何帮助将不胜感激。
这是我想做的:
<select id="state" ng-model="cou">
<option value="">Choisir</option>
<option ng-repeat="cou in countries" value="{{cou.id}}">{{cou.name}}</option>
</select>
<select id="state" ng-disabled="!cou">
<option value="">Choisir</option>
<option ng-repeat="state in cou.states" value="{{state.id}}">{{state.dep}}</option>
</select>
但现在第二个下拉菜单不起作用,如果您能确定问题将得到解决
【问题讨论】:
-
您是否正在考虑为国家/地区列表设置唯一值/代码?如果是这样,您将需要稍微更改您的数据结构
-
是的,我需要为国家列表设置一个唯一的值/代码(就像在第二个下拉列表中所做的那样),并确保它需要更改数据结构
-
为什么需要这样做?绑定到选项的每个对象都是唯一的对象。如果您使用 ng-model 它将包含已在选择中选择的特定对象。您不需要将任何特定值放入选项的“值”属性中。
-
我会解释更多;第一个下拉列表中的每个元素都代表一个具有特定代码的区域,我必须将其放入选项标签的值中(因为这个 sn-p 是表单的一部分),但是使用我的代码,标签选项的值获取名称区域自动像这样:
我必须这样做,例如:
标签: angularjs ng-options