【问题标题】:Applying ng-repeat on array of objects displays [Object object]对对象数组应用 ng-repeat 会显示 [Object object]
【发布时间】:2015-03-16 12:48:14
【问题描述】:

我有一个如下所示的控制器:

var PlayersController = function($scope, $http) {
    $http.get('/Players/Index').success(function (data) {
        console.log(data);
        $scope.players = data;
    });
}

PlayersController.$inject = ['$scope','$http'];

我的路由如下所示:

var KorpenApp = angular.module('KorpenApp', ['ngRoute']);

KorpenApp.controller('HomeController', HomeController);
KorpenApp.controller('PlayersController', PlayersController);

var configFunction = function($routeProvider) {
    $routeProvider
        .when('/Players', { templateUrl: 'Players/Index', controller: PlayersController })
    .otherwise({redirectTo: '/'});
}

configFunction.$inject = ['$routeProvider'];
KorpenApp.config(configFunction);

我的视图(玩家/索引)如下所示:

<p>TEST</p>
<p>{{players.length}}</p>
<ul ng-repeat="player in players">
    <li ng-repeat="prop in player">
        {{prop}}
    </li>
</ul>

播放器控制器中的控制台日志记录了一个包含 5 个对象的数组,这是应该的。这些对象包含许多我要显示的属性。但是,我的视图只显示:

[对象对象],[对象对象],[对象对象],[对象对象],[对象对象]

似乎视图中的所有内容都被忽略了,所以很明显我做错了什么。我会认为至少包含“TEST”的段落会显示,即使玩家数组有问题。所以我的两个问题是:

  1. 为什么我的视图显示“[object Object],[object Object],[object Object],[object Object],[object Object]”?
  2. 为什么我放在 Players/Index 中的东西没有显示?

【问题讨论】:

  • 你能用你的 console.log(players) 发表评论吗
  • console.log 显示: [Object,Object,Object,Object,Object] 并且每个对象都有属性 Id, FirstName, LastName
  • 所以尝试使用 console.log(angular.toJson(data));

标签: angularjs angularjs-ng-repeat angularjs-routing


【解决方案1】:

您需要执行以下操作:

var PlayersController = function($scope, $http) {
    $http.get('/Players/Index').success(function (data) {
        console.log(data);
        $scope.players = data;
    });
}

PlayersController.$inject = ['$scope','$http'];

在视图中:

<p>TEST</p>
<p>{{players.length}}</p>
<ul ng-repeat="player in players">
    {{player.prop}}
</ul>

【讨论】:

    【解决方案2】:
    1. 因为这是打印对象的方式。如果你想要这个对象的 json 表示,使用

      console.log(angular.toJson(data));
      
    2. 很难说。也许视图实际上不在此 URL 上。查看浏览器开发工具的“网络”选项卡,查看返回的内容。

    【讨论】:

    • 1.是的,但为什么它会显示在我的视图中?我找不到我这样做的任何地方。在控制台中是的,但不是在视图中。 2. 在 Network 选项卡中,Players/Index 的状态为 200 OK,所以它似乎存在。
    • 1.对不起,我看错了你的问题。我以为那是在控制台中写的。 2. 我刚刚意识到你得到 Players/Index 来获取玩家(所以它应该返回一个 JSON 数组),以及相同的 URL 来获取视图的 HTML 模板(所以它应该返回一个 html 模板)。修复其中一个 URL。
    • 更改 URL 以使播放器正常工作,因此实际上视图与您最初回答的 URL 不正确。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2022-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-29
    • 1970-01-01
    相关资源
    最近更新 更多