【问题标题】:Error: Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys错误:不允许在转发器中重复。使用“track by”表达式指定唯一键
【发布时间】:2016-08-01 12:00:17
【问题描述】:

这里实际上是完整的错误: 错误:[ngRepeat:dupes] 不允许在转发器中重复。使用“track by”表达式指定唯一键。中继器:orang in orangs,重复键:字符串:“,重复值:”

这是我的 html 代码:

<ion-view view-title="Daftar Orang">
  <ion-content>
    <ion-list>
      <ion-item ng-repeat="orang in orangs">
        {{orang.nama}}
      </ion-item>
    </ion-list>
  </ion-content>
</ion-view>

这是我的角度控制器:

.controller('OrangCtrl', function($scope, $http, $ionicLoading, $ionicHistory) {

  $ionicHistory.nextViewOptions({
    disableBack: true
  });

  //loading
  $scope.show = function() {
    $ionicLoading.show({
      template: '<ion-spinner icon="android"></ion-spinner><br>Harap Tunggu'
    }).then(function(){
       console.log("The loading indicator is now displayed");
    });
  };
  $scope.hide = function(){
    $ionicLoading.hide().then(function(){
       console.log("The loading indicator is now hidden");
    });
  };  
    $scope.show();
    $http({
        url: "http://localhost/android_server/orang/read?key=vr46",
        method: "GET",
        data: {}
    })
    .then(function(response) {
        $scope.myData = response.data;
        $scope.hide();
          $scope.orangs = angular.toJson($scope.myData.data);
          console.log('Response Data', $scope.orangs);

    });   

})

这是我的 codeigniter rest_server 控制器:

    <?php

require(APPPATH.'libraries/REST_Controller.php');

class Orang extends REST_Controller {

    public function __construct(){
        parent::__construct();
            date_default_timezone_set("Asia/Jakarta");

        if (isset($_SERVER['HTTP_ORIGIN'])) {
            header("Access-Control-Allow-Origin: {$_SERVER['HTTP_ORIGIN']}");
            header('Access-Control-Allow-Credentials: true');
            header('Access-Control-Max-Age: 86400');    // cache for 1 day
        }

        // Access-Control headers are received during OPTIONS requests
        if ($_SERVER['REQUEST_METHOD'] == 'OPTIONS') {

            if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_METHOD']))
                header("Access-Control-Allow-Methods: GET, POST, OPTIONS");         

            if (isset($_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']))
                header("Access-Control-Allow-Headers:        
                {$_SERVER['HTTP_ACCESS_CONTROL_REQUEST_HEADERS']}");

            exit(0);
        }           


    }

    function read_get()
    {
        $data = $this->db->order_by('id', 'DESC')->get('orang')->result();
        if($data){
            $response['data'] = $data;
            $response['status'] = 1;
        }else{
            $response['status'] = 0;
            $response['message'] = 'Data tidak ada';
        }   
        $this->response($response);
    }
}

我使用 codeigniter rest server 来获取数据。

【问题讨论】:

标签: angularjs codeigniter foreach ionic-framework


【解决方案1】:

将“track by $index”添加到您的 ng-repeat。

<ion-item ng-repeat="orang in orangs track by $index">
  {{orang.nama}}
</ion-item>

Angular 不喜欢它的中继器中有重复的键。这将改为通过索引来跟踪它们。见more detailed explanation here

【讨论】:

  • 现在错误已经消失,但数据仍然没有显示
猜你喜欢
  • 2016-03-05
  • 2017-05-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-17
  • 2015-03-02
  • 2021-12-26
相关资源
最近更新 更多