使用Angular中的对象在选择下拉列表中设置默认值

时间:2015-11-19 22:00:39

标签: javascript angularjs

我需要一些帮助。我无法在对象中创建$scope.headline.category,它必须保留一个字符串。 groupList必须是对象列表。如何将下拉列表的初始值设置为第2项(1索引)?我可以通过控制器设置它,但我有很多项目,似乎应该有一个更简单的方法...也许使用ng-init?谢谢你的帮助。

我尝试过但不起作用:

ng-init="headline.category = group.label"

我尝试过的确有效,但我觉得这样更容易?

  for (var a = 0; a < $scope.headlineList.length; a++) {
    for (var b = 0; b < $scope.groupList.length; b++) {
        if ($scope.headlineList[a].category == $scope.groupList[b].label) {
            $scope.headlineList[a].category = $scope.groupList[b];
        }
    }
}

$scope.headline.category = "B";
$scope.groupList = [ {label: "A"}, {label: "B"}, {label: "C"} ];

HTML

<select ng-model="headline.category" ng-options="group.label for group in groupList"></select>

2 个答案:

答案 0 :(得分:1)

我认为您只需要控制器中的以下内容:

app.controller('MyCtrl',function($scope){
      $scope.headline = { category: "B" }
      $scope.groupList = [ {label: "A"}, {label: "B"}, {label: "C"} ];
  });

选择更改为:

<select ng-model="headline.category" ng-options="group.label as group.label for group in groupList"></select>

关键更改是将标题设置为{ category: "B" }的对象(通过我正在猜测的某种ajax调用设置这种方式)和选项开头的group.label as来指示值从类别对象中应用到模型。

Plunk example

答案 1 :(得分:0)

<强>已更新 尝试:

<select ng-model="headline.category" ng-init="headline.category = groupList[index]" ng-options="group.label for group in groupList"></select>

位指示:

angular.forEach($scope.groupList, function(value, key) {
      if(value.label == $scope.headline.category){
          $scope.index = key;  
      }
  });
带有演示的

PLUNKER