如何在控制器中设置md-select的md-options选中值?
问题分析与解决方案
先帮你拆解下代码里的两个核心问题:
1. ng-value 用错了语法
Angular 的 ng-value 指令接受的是表达式,不需要套 {{}} 插值。你写的 ng-value="{{number.number}}" 会把数值转成字符串字面量,而不是绑定到变量上,这直接导致 md-select 的 ng-model 拿不到选中的值。
正确写法应该直接绑定变量:
<md-option ng-repeat="number in vm.phonenumbers" ng-value="number.number"> {{number.number}} </md-option>
2. ng-click 触发时机不对
你把 ng-click="vm.login()" 放在了 md-option 上,点击选项时会先执行 login(),但此时 md-select 的 ngModel 还没完成更新,所以控制器里的 this.telephonyInfo.phone.number 还是 null。
正确的做法是把触发逻辑移到 md-select 的 ng-change 事件中,这样会在模型更新完成后再执行 login():
<md-select ng-model="vm.telephonyInfo.phone.number" placeholder="Selecteer een nummer" required ng-change="vm.login()">
修正后的完整代码
<md-input-container> <md-select ng-model="vm.telephonyInfo.phone.number" placeholder="Selecteer een nummer" required ng-change="vm.login()"> <md-option ng-repeat="number in vm.phonenumbers" ng-value="number.number"> {{number.number}} </md-option> </md-select> </md-input-container>
调整后,选择选项时会先把选中的号码正确赋值给 vm.telephonyInfo.phone.number,再触发 login(),控制器里就能拿到正确的数值了。
内容的提问来源于stack exchange,提问作者Peter Boomsma
相关产品推荐
相关产品推荐

