角度材料:为什么md-select与ng-model-options一起使用会触发ng-change?

时间:2016-01-19 07:21:12

标签: angularjs angular-material

我有一个用例,我需要使用md-select并从数组中提供选项。保存所选值并从数据库中提取。如果数据库没有存储值,则返回null。

现在,如果数据库中的值为null,我需要设置数组的第4个值(即Default)。所以我有以下逻辑:

$scope.MR=  $scope.data.MR !== null  ? $scope.data.MR : $scope.MRList[3];

我的模板是:

<md-input-container class="flex flex-sm-100 TS_action_dropdown md-input-has-value">
                <md-select ng-model="MR" ng-change="updateManualRating(target, MR)" class="new_delta_select" ng-model-options="{trackBy: '$value.name'}">
                    <md-option ng-value="t" ng-repeat="t in MRList track by $index">{{t.name}}</md-option>
                </md-select>
            </md-input-container>

根据Angular docs https://material.angularjs.org/latest/api/directive/mdSelect,我们需要使用ng-model-options来设置与选项列表匹配的预定义值。我已经做了同样的事情,但是,在整个实现之后,我的ng-change函数(写在更改md-select时)会在页面加载时自动触发。

根据Angular文档,这是在用户手动更改时明确触发的。我也相信它是如何运作的。但我很困惑,为什么会这样。 Angular材质在某处使用$ viewController并触发类似的效果吗?

或者这是一个错误或已知问题。如果是的话,如何避免或解决这个问题?

0 个答案:

没有答案