ios - ionic 中使用 cordova camera 插件 上传重复图片 不显示
ringa_lee
ringa_lee 2017-04-18 09:55:37
0
3
518
<p  class="feedback-row feedback-list-imgs" ng-repeat="item in image_result">
      <p class="feedback-list-img" ng-click="changePic(item)">
        <!--<img ng-if="item.length" src="{{item}}">-->
        <img ng-src="{{item}}" style="width:100%;height:100%;">
        <!--<p class="img" style="background: url({{item}});background-size: 100% 100%;"></p>-->
      </p>
      <p class="img-delete" ng-click="deletePic(item)"><span class="ion-close-circled"></span></p>
    </p>
    
    
    
    
    
    js 调用原生 
        var data = ['取照片'];
  $scope.curPictureIndex = -1;//当前图片索引
  SGPlugin.showSelectedView($.proxy(self.onSelectPictureSuccess, self), data);
  
  
  原生返回
  
    /**

图片选择成功,显示图片并存储
**/
$scope.onSelectPictureSuccess = function(imageData) {

var self = this;
var imageDataTmp;
if (self.SGPlugin.isAndroid()) {
  imageDataTmp = "data:image/jpeg;base64," + imageData;
} else {
  imageDataTmp = imageData;
}

// 存储、置换该图片
var imageResultArray = $scope.image_result;
imageResultArray = _.isEmpty(imageResultArray) ? new Array() : imageResultArray;
if(self.curPictureIndex != -1){
  imageResultArray[self.curPictureIndex] = imageDataTmp;
}
else {
  imageResultArray.push(imageDataTmp);
}

$scope.image_result = imageResultArray;
$scope.$apply();

}
不重复的照片显示没有问题 上传重复的照片 有数据 但是不显示 求原因 报错

Error: [ngRepeat:dupes] Duplicates in a repeater are not allowed. Use 'track by' expression to specify unique keys. Repeater: item in image_result

ringa_lee
ringa_lee

ringa_lee

répondre à tous(3)
左手右手慢动作

La cause du problème est que le type de données des objets dans le tableau image_result est une chaîne, car ng-repeat ne permet pas à deux objets avec le même identifiant d'exister dans la collection pour les types de données de base tels que les nombres ou. chaînes, son identifiant est sa propre valeur. Par conséquent, deux nombres identiques ne sont pas autorisés à exister dans le tableau. Afin d'éviter cette erreur, vous devez définir votre propre piste par expression.

Solution :

  • élément dans les éléments suivi par item.id // Générer un identifiant unique à des fins commerciales

  • élément dans les éléments suivis par $index //Ou utilisez directement la variable d'index de boucle $index

Une autre chose à noter est que si des objets sont stockés dans le tableau :

Extrait de code HTML

<body ng-app="exeApp">
 <ul ng-controller="MainCtrl">
   <li ng-repeat="user in users">
     {{user.name}}
   </li>
 </ul>
</body>

Code JavaScript

angular.module('exeApp', []).
    controller('MainCtrl', ['$scope', 
       function($scope) {
        $scope.users = [
          {name: 'fer'},
          {name: 'fer'}
        ]
}]);

Résultat de l'exécution :

Pour des exemples spécifiques, veuillez vous référer à JSBin

巴扎黑

<p class="feedback-row feedback-list-imgs" ng-repeat="élément dans image_result suivi par $index">

Essayez de changer cela ici. Le tableau de boucles ng-repeat d'Angular signalera une erreur si le contenu du tableau est répété

黄舟

La raison de l'erreur est dans ng-repeat

Par défaut, chaque élément doit être unique lors de ng-repeat. Parce que vous avez des données en double, un tel message d'erreur sera signalé

.

Le message d'erreur vous a déjà indiqué la solution. Utilisez track by

ng-repeat="item in items track by $index"
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal