在对象数组上应用 ng-repeat 显示 [Object object]

Applying ng-repeat on array of objects displays [Object object]

我有一个看起来像这样的控制器:

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);

我的观点(Players/Index)是这样的:

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

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

[object Object],[object Object],[object Object],[object Object],[object Object]

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

  1. 为什么我的视图显示“[object Object],[object Object],[object Object],[object Object],[object Object]”?
  2. 为什么我放入 Players/Index 的内容没有显示?
  1. 因为这就是打印对象的方式。如果您想要此对象的 json 表示,请使用

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

您需要执行以下操作:

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>