You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在控制器中设置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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 09:49:14