【问题标题】:How do I access the nested categories data and reference it in my controller?如何访问嵌套类别数据并在我的控制器中引用它?
【发布时间】:2016-11-06 21:00:45
【问题描述】:

我正在使用 WP Rest API 创建一个 Ionic 应用程序。我已经返回了帖子数据,但我还希望获得类别名称。帖子的 JSON 数据仅包含类别 ID。我正在尝试访问类别 ID 并在我的控制器中引用它以获取类别数据,以便通过 ID 获取类别名称。

My controller looks like this:
svampeApp.controller('PostCtrl', function ($scope, svampeApi, $stateParams) {

//Individual Post Controller
console.log("$stateParams", $stateParams);

$scope.posts = [];
$scope.categoryId = [];

$scope.id = $stateParams.id;

svampeApi.getPostData($scope.id).then(function (succ) {
  $scope.posts = succ;
  $scope.categoryId = succ.categories;
}, function(err) {
  console.log('Error: ', err);
});

console.log("Category Object", $scope.categoryId);

//Getting the category ID to display the category name
$scope.categories = [];    

svampeApi.getCategoryData($scope.categoryId).then(function (succ) {
  $scope.categories = succ;
}, function(err) {
  console.log('Error: ', err);
});

});

通过这一行,我应该得到存储在 Post 对象中的类别 ID:

$scope.categoryId = succ.categories;

但是,当我使用 ID 对类别名称进行第二次 api 调用时,出现错误。

svampeApi.getCategoryData($scope.categoryId).then(function (succ) {
  $scope.categories = succ;
}, function(err) {
  console.log('Error: ', err);
});

如何将单个帖子的类别 ID 保存在范围内,以便在第二个 api 调用中访问它?类别包括类别的名称,我想通过以下方式在我的视图中访问:

<p>
  {{categories.name}}
</p>

类别对象为空:

Category Object []

我希望你能帮助我。

【问题讨论】:

  • 请澄清:您是从服务器获取类别名称还是从第一个服务器调用(包括类别 ID)中嵌入到 JSON 中?我没有看到 REST/Ajax 调用。注意:您的服务器调用是异步的,因此在保证类别 ID 服务器调用完成之前,您无法调用从服务器获取类别名称。这意味着您需要链接您的承诺。
  • 第一次调用 'svampeApi.getPostData($scope.id)' 包含类别 ID 但不包含名称。这就是为什么我试图在第二次调用中将 ID 作为“svampeApi.getCategoryData($scope.categoryId)”传递。 getCategoryData 有一个名为 name 的字段,其中包含名称。我想从第一个调用中提取 ID 以在第二个调用中使用。我希望这是有道理的。
  • 是第二次调用服务器获取类别名称吗?同样,如果是这样,您必须在第一次调用的“succ”函数中调用它。否则,在第一次调用从服务器返回获取 id 之前 过早地调用它。如果获取 cat 名称的第二次调用是 not 到服务器并且是同步的,为什么你有一个 '.then()' 这意味着一个异步承诺返回的请求?
  • 分类数据嵌套在 JSON 数据中: "categories": [ 3 ],
  • 那你为什么要使用'.then(...)'?函数实现是否创建了一个承诺?

标签: angularjs http ionic-framework controller wp-api


【解决方案1】:

请澄清:您是从服务器获取类别名称还是从第一个服务器调用(包括类别 ID)中嵌入到 JSON 中?我没有看到任何 REST/Ajax 调用。注意:您的服务器调用是异步的,因此在保证类别 ID 服务器调用完成之前,您无法调用从服务器获取类别名称。这意味着您需要链接您的承诺。

【讨论】:

  • 有效!使用以下语法引用 Id:$scope.categoryId = succ.categories[0];
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-06-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多