如何通过id设置组合值?

时间:2014-08-11 03:27:19

标签: javascript angularjs combobox

我正在尝试使用id:

设置此角度组合的值
$scope.myColor = 
{
   id: 4
};

然而它不起作用?

这是角度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

3 个答案:

答案 0 :(得分:0)

如果我正确地提出您的问题,您希望显示如下

Currently selected: blue

如果是这样,你可以在你的第73行羽毛球上说这样的话。

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

答案 1 :(得分:0)

如果我不知道,$ scope.colors是组合选项,Scope.myColor是组合值。是的吗?

对于AngularJS,combo只适用于数组选项。只要它们是同一个对象,AngularJS就会认为两个对象是相同的。如果对象具有相同的属性和值,则无关紧要。

您选择红色的注释行应该可以使用。

答案 2 :(得分:0)

您可以添加track by选项以告知Angular要用于比较的字段:

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

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