如何通过id设置组合值

how to set combo value by id?

本文关键字:组合 设置 id 何通过      更新时间:2023-09-26

我试图设置这个角组合的值与id:

$scope.myColor = 
{
   id: 4
};

然而它不会工作?

这是余下的angular js代码:

 angular.module('selectExample', [])
      .controller('ExampleController', ['$scope',
        function($scope) {
          $scope.colors = [{
            id: 1,
            name: 'black',
            shade: 'dark'
          }, {
            id: 2,
            name: 'white',
            shade: 'light'
          }, {
            id: 3,
            name: 'red',
            shade: 'dark'
          }, {
            id: 4,
            name: 'blue',
            shade: 'dark'
          }, {
            id: 5,
            name: 'yellow',
            shade: 'light'
          }];
          //$scope.myColor = $scope.colors[2]; // red
          $scope.myColor = {
            id: 4
          };
        }
      ]);

这是一个plunkr ref:http://plnkr.co/edit/jkXl4BhLeuu0CWnMhqkV?p=info

你可以添加一个track by选项来告诉Angular使用哪个字段进行比较:

  <select ng-model="myColor"
          ng-options="color.name for color in colors track by color.id">
  </select>

应该在组合框中选择合适的项。

如果我正确地理解了你的问题你想显示如下

Currently selected: blue

如果是,你可以在你的第73行plunker中这样说。

<hr/>Currently selected: {{colors[myColor.id-1].name}}

如果我没理解错的话,$作用域。colors是组合选项和范围。myColor是组合值。是吗?

对AngularJS来说,combo只对数组选项有效。只要两个对象是相同的,AngularJS就会认为它们是相等的。对象是否具有相同的属性和值并不重要。

你的注释行选择了红色,应该可以。