1

我正在尝试使用 ng-options 生成多个选择元素,并希望预选一些项目。我从数据库中获取预选项目作为对象数组。这是我构建可选择项的 HTML 标记:

<select ng-model="currentAppointment.services" ng-options="value.id as value.name group by value.group for value in servicegroups"></select>

currentAppointment.services 变量保存当前选定的对象。在服务组中,它们都是可选择的项目,我从 REST 服务中获得。服务组的 JSON 如下所示:

[
  {
    "id": 0,
    "name": "Test1"
    "price": 20.0
  },
  {
    "id": 1,
    "name": "Test2"
  }
]

和 currentAppointment JSON:

{
  "_id": "1001",
  "title" : "test",
  "services": [
    {
      "id": 0,
      "name": "Test1"
      "price": 20.0
    }
  ]
}

选择元素已正确创建。但是没有预选 id 为 0 的服务对象。我可以想象问题是,角度将普通对象与 angularjs 资源对象进行比较,因此对象不相等。相反,对象应该通过 id 进行比较。但是我如何在不编写自己的指令的情况下实现这一点?

4

1 回答 1

1

如果您想通过为其分配一个对象来预填充下拉列表,那么您需要value.id从理解表达式中删除。

<select ng-model="currentAppointment.services" ng-options="value.name group by value.group for value in servicegroups"></select>

然后做

$scope.currentAppointment.services = $scope.servicegroups[0];

Working Demo

于 2013-08-05T00:12:18.097 回答