1

我想遍历这样的项目:

<section class="col-sm-4" data-ng-controller="PredictionsController" data-ng-init="findMyPredictions()">
    <div class="games">
        <div class="game-row" ng-repeat="prediction in predictions" ng-init="getGame(prediction.game_id)">
            <a class="button primary alt block" href="#!/predictions/{{prediction._id}}">
                <span class="home flag {{gameInfo.team1_key}}"></span>
        <span class="middle">
            <span class="date">{{gameInfo.play_at | date: 'd.MM HH:mm'}}</span>
            <span class="versus">{{gameInfo.team1_title}} - {{gameInfo.team2_title}}</span>
        </span>
                <span class="away flag {{gameInfo.team2_key}}"></span>
            </a>
        </div>
    </div>
</section>

但输出只是相同信息的 X 倍: 在此处输入图像描述 尽管请求正确完成: 在此处输入图像描述

知道这里有什么问题吗?

更新:我的 getGame 功能:

$scope.getGame = function (game_id) {
    $scope.gameInfo = {};
    $http.get('/games/' + game_id)
    .success(function (data) {
        $scope.gameInfo = data;
    });

};
4

1 回答 1

7

gameInfo你每次都在覆盖。所以到它渲染的时候,它只显示了最后一个三遍。你需要做的更像:

<div class="game-row" ng-repeat="prediction in predictions" ng-init="getGame(prediction)">

请注意,我们传入了prediction对象,而不仅仅是 id。然后你可以这样做:

$scope.getGame = function (prediction) {
  prediction.gameInfo = {};
  $http.get('/games/' + game_id)
  .success(function (data) {
    prediction.gameInfo = data;
  });
};

并且在你的 html 中变薄,而不是gameInfo.whatever你会这样做prediction.gameInfo.whatever,这样每个预测都有它自己的变量,并且你不会覆盖该变量的单个副本。

例如:

<span class="date">{{gameInfo.play_at | date: 'd.MM HH:mm'}}</span>

会成为

<span class="date">{{prediction.gameInfo.play_at | date: 'd.MM HH:mm'}}</span>
于 2014-06-11T22:51:03.617 回答