使用 ng-repeat 在 select 中默认 selected 值
Default selected value in select with ng-repeat
我正在尝试使用 ng-selected 设置默认选定值,但它不起作用。
我的密码是
<select
id="department"
name="department"
class="form-control"
ng-model="editProfilCtrl.infos.department"
ng-change="editProfilCtrl.findCities()">
<option
ng-repeat="dep in editProfilCtrl.infos.departments"
class="text-uppercase"
value="{{dep}}"
ng-selected="{{dep.idDepartment == editProfilCtrl.infos.department}}">
{{editProfilCtrl.infos.department}} - {{dep.idDepartment}} - {{dep.code}} - {{dep.name}}
</option>
</select>
在我的下拉列表中有这样的结果:
- (空)
- 1 - 1 - 代码 01 - 测试 1
- 1 - 2 - 代码 02 - 测试 2
- 1 - 3 - 代码 03 - 测试 3
- ...
可以看到editProfilCtrl.infos.department = 1,所以一般情况下必须默认选中。但这是被选中的空行:/。
你有什么想法吗?
谢谢。
编辑:mac gyver "solution" :
<select
id="department"
name="department"
class="form-control"
ng-model='editProfilCtrl.infos.department'
ng-change="editProfilCtrl.findCities()"
ng-options='dep as dep.code + " - " + dep.name for dep in editProfilCtrl.infos.departments'>
</select>
在我的控制器中:
self.infos.selectedDepartment = editProfilFormDto.department;
self.infos.departments = editProfilFormDto.departments;
self.infos.department = self.infos.departments[self.infos.selectedDepartment - 1];
一个简单的方法是设置 editProfilCtrl.infos.department :
editProfilCtrl.infos.department = editProfilCtrl.infos.departments[0]
在你的控制器中,不要使用 ng-selected
您是否检查过文档或在 google 上搜索过?据我所知,您不能使用该方法设置默认值。还有一个专门的指令可以有效地做出选择。
我是新手,但希望我的回答对您有所帮助。
使用 ngOptions
https://docs.angularjs.org/api/ng/directive/ngOptions
/**
somewhere in your controller
*/
editProfilCtrl.infos.department = editProfilCtrl.infos.departments[0]
<select
id="department"
name="department"
class="form-control"
ng-model="editProfilCtrl.infos.department"
ng-change="editProfilCtrl.findCities()" ng-options="dep.idDepartment+' '+dep.code+' '+dep.name for dep in editProfilCtrl.infos.departments"></select>
我正在尝试使用 ng-selected 设置默认选定值,但它不起作用。
我的密码是
<select
id="department"
name="department"
class="form-control"
ng-model="editProfilCtrl.infos.department"
ng-change="editProfilCtrl.findCities()">
<option
ng-repeat="dep in editProfilCtrl.infos.departments"
class="text-uppercase"
value="{{dep}}"
ng-selected="{{dep.idDepartment == editProfilCtrl.infos.department}}">
{{editProfilCtrl.infos.department}} - {{dep.idDepartment}} - {{dep.code}} - {{dep.name}}
</option>
</select>
在我的下拉列表中有这样的结果:
- (空)
- 1 - 1 - 代码 01 - 测试 1
- 1 - 2 - 代码 02 - 测试 2
- 1 - 3 - 代码 03 - 测试 3
- ...
可以看到editProfilCtrl.infos.department = 1,所以一般情况下必须默认选中。但这是被选中的空行:/。 你有什么想法吗?
谢谢。
编辑:mac gyver "solution" :
<select
id="department"
name="department"
class="form-control"
ng-model='editProfilCtrl.infos.department'
ng-change="editProfilCtrl.findCities()"
ng-options='dep as dep.code + " - " + dep.name for dep in editProfilCtrl.infos.departments'>
</select>
在我的控制器中:
self.infos.selectedDepartment = editProfilFormDto.department;
self.infos.departments = editProfilFormDto.departments;
self.infos.department = self.infos.departments[self.infos.selectedDepartment - 1];
一个简单的方法是设置 editProfilCtrl.infos.department :
editProfilCtrl.infos.department = editProfilCtrl.infos.departments[0]
在你的控制器中,不要使用 ng-selected
您是否检查过文档或在 google 上搜索过?据我所知,您不能使用该方法设置默认值。还有一个专门的指令可以有效地做出选择。
我是新手,但希望我的回答对您有所帮助。
使用 ngOptions https://docs.angularjs.org/api/ng/directive/ngOptions
/**
somewhere in your controller
*/
editProfilCtrl.infos.department = editProfilCtrl.infos.departments[0]
<select
id="department"
name="department"
class="form-control"
ng-model="editProfilCtrl.infos.department"
ng-change="editProfilCtrl.findCities()" ng-options="dep.idDepartment+' '+dep.code+' '+dep.name for dep in editProfilCtrl.infos.departments"></select>