md-select 中的 ng-model 不更新 selected 值

ng-model in a md-select doesn't update selected value

我正在使用 md-select:

<label>Type</label>
<md-select ng-model="selected_data_type">
    <md-option ng-repeat="data_type in data_types" value="{{data_type.name}}">{{data_type.name}}</md-option>
</md-select>

预加载数据使用:

for (let type of getData())
   $scope.data_types.push({ name: type });

并在加载数据后设置默认值:

$scope.selected_data_type = data.type

所以现在我得到了一个 md-select,其中包含一些项目和一个 selected 项目作为 默认值,但是当更改 select将项目编辑到 default 以外的任何项目并按下事件按钮,触发 console.log($scope.selected_data_type); 给出 default selected价值。这是为什么?

使用 ng-value 而不是 value。来自 official documentation

<md-input-container>
  <md-select ng-model="someModel" placeholder="Select a state">
    <md-option ng-value="opt" ng-repeat="opt in neighborhoods2">{{ opt }}</md-option>
  </md-select>
</md-input-container>

您提供的信息有点混乱。在你的问题中你有 (1)

value="{{data_type.name}}"

这是正确的。在您的 CodePen 示例中,您有

ng-value="{{data_type.name}}"

这是不正确的。应该是 (2)

ng-value="data_type.name"

正如您在控制台中看到的那样,您的 CodePen 适用于 (1) 和 (2)。

CodePen