我有一个用例,我需要使用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并触发类似的效果吗?
或者这是一个错误或已知问题。如果是的话,如何避免或解决这个问题?