Md-select & Md-options 使用多个交换值 AngularJS Angular Material

Md-select & Md-options Using Multiple Swap Values AngularJS Angular Material

您好 我对使用 md-select 和 md-options 有点陌生,并且 运行 遇到了一些障碍。我需要根据 md-option 中的项目是否 selected 更改值并将其设置为 true,如果不是 return 则返回 false。但是,我对如何执行此操作有点迷茫,可以使用一些指导。目前,我正在尝试 运行 一个函数来改变它,但我似乎无法理解如何传递正确的对象。

我认为我在 md-options 和 md-select 中逻辑上遗漏了一些东西,我们将不胜感激。

    //Array of objects in ng-repeat
var vm= $scope;
  vm.metricsArr = [
    {id: 0, name:"Aircraft Commander", valId:false},
    {id: 1, name:"Flight Hours", valId: false},
    {id: 2, name:"# of Sorties", valId: false}];

//Change value
vm.changeMetrics = function(passedInParam){
//nothing in here since I cant get it to work currently
};

//HTML where i pass object in to change value
 <md-select multiple ng-model="i" ng-model-options= "{trackBy: '$value.id'}" ng-change="changeMetricVal(i);">
                <md-option ng-value="i" ng-repeat="i in metricsArr">
                  {{i.name}}
                </md-option>
              </md-select>

出于某种原因,ng-change 没有被调用(我似乎记得以前使用 md-select 时遇到过这个问题)。你能做的是使用 $scope.$watch - CodePen

标记

<div ng-controller="AppCtrl as vm" ng-cloak="" ng-app="MyApp">
  <md-select multiple ng-model="i" ng-model-options= "{trackBy: '$value.id'}" aria-label="Select">
    <md-option ng-value="i" ng-repeat="i in vm.metricsArr">
        {{i.name}}
    </md-option>
  </md-select>
</div>

JS

angular.module('MyApp',['ngMaterial'])

.controller('AppCtrl', function($scope) {
  var vm = this;
  vm.metricsArr = [
    {id: 0, name:"Aircraft Commander", valId:false},
    {id: 1, name:"Flight Hours", valId: false},
    {id: 2, name:"# of Sorties", valId: false}];

  $scope.$watch("i", function (newValue) {
    console.log(newValue);
  });
});