访问 JSON 中的嵌套对象,select 下拉列表中的正确值 (Angularjs)

Access to nested object in JSON ,select the right value in a dropdownlist (Angularjs)

我是 AngularJS 的初学者。我使用 $resource 服务根据服务器的 id 获取类型为 person 的特定对象,以便更新此对象。

资源服务:

moduleName.factory('Person', function ($resource) {
  return $resource('/application/person/:id', {}, {
        show: { method: 'GET' , params: {id: '@id'}},
  });
});

我收到并使用 {{}} 在浏览器中显示的对象是:

      {
  "id": "560cf96ee85532035928889e",
  "firstName": "Christiane",
  "gender": "Male",
  "flight": {
    "id": null,
    "arrivalDate": "2015-01-05 11:30",
    "arrivalAirport": {
      "name": "Frankfurt"
    },
    "stopovers": []
  }
}

在这个表单中,我有一个包含机场列表的下拉列表,我希望在这个下拉列表中选择 arrivalAirport 的值,但是没有选择任何值,我尝试设置这个下拉列表的选定值在此 view.Before 的 AngularJs 控制器中列出设置此对象的值 我尝试通过控制器内的此代码访问它们的值。

moduleName.controller('PersonDetailController',function ($scope, $routeParams, Person,$location) {
                $scope.person = Person.show({id: $routeParams.id});
                console.log($scope.person.flight.arrivalAirport);
        });

当我想获取嵌套在 person 对象中的对象 flight.arrivalAirport 的值时,我遇到了这个错误。

TypeError: 无法读取未定义的 属性 'arrivalAirport'

如何显示在下拉列表中选择的正确值以及如何访问 stopovers 数组等其他对象以更新它们的值?

谢谢。

当您调用 console.log 尚未检索到此人的数据。你应该这样做:

$scope.person = Person.show({id: $routeParams.id}, function(person) {
    console.log(person.flight.arrivalAirport);
});

一般来说,任何处理异步接收数据的代码都不能放在调用之后,因为此时数据不太可能被检索到,您应该使用回调和承诺。

您的视图应该会自动更新,您说过会自动更新,至少显示 json 的部分是这样。为了进行下拉更新,您应该将其值绑定到 $scope.person

内的 属性

如果下拉菜单没有更新,那么一定有其他错误,您可能还需要 post 下拉菜单的代码。
如果您想手动更新下拉列表,那么您需要将相关代码放入回调中(我在上面的代码中添加到 "person.show" 的函数)以使其工作