如何在控制器上设置md-options的值?

时间:2018-05-23 15:27:19

标签: angularjs

我有一个简单的md-select组件。我想在控制器中的number.number属性上设置vm.telephonyInfo.phone.number的值。

<md-input-container>
    <md-select ng-model="vm.telephonyInfo.phone.number" placeholder="Selecteer een nummer" required>
        <md-option ng-repeat="number in vm.phonenumbers"
            ng-value="{{number.number}}" ng-click="vm.login()">{{number.number}}</md-option>
    </md-select>
</md-input-container>

当我选择一个选项时,我会记录login()功能,但属性this.telephonyInfo.phone.number始终为null

我的数据绑定错了吗?我以为我必须将ng-value放在md-option中,将ng-model放在md-select中。

1 个答案:

答案 0 :(得分:1)

使用ng-change指令代替ng-click

<md-input-container>
    <md-select ng-model="vm.telephonyInfo.phone.number"
               ng-change="vm.login()"
               placeholder="Selecteer een nummer" required>
        <md-option ng-repeat="number in vm.phonenumbers"
            ̶n̶g̶-̶v̶a̶l̶u̶e̶=̶"̶{̶{̶n̶u̶m̶b̶e̶r̶.̶n̶u̶m̶b̶e̶r̶}̶}̶"̶
            ng-value="number.number"
            ̶n̶g̶-̶c̶l̶i̶c̶k̶=̶"̶v̶m̶.̶l̶o̶g̶i̶n̶(̶)̶"̶ >{{number.number}}</md-option>
    </md-select>
</md-input-container>

还要避免在{{ }}指令中使用双卷ng-value插值。请参阅AngularJS Developer Guide - Why mixing interpolation and expressions is bad practice