2017-12-01 16 views
1

私はAngularJsをテストするために偽のAppを作成します。私はngStorageでLocalStorageを使用します。 私の問題は、配列にデータを持つオブジェクトを置くことができないことです。 私がしようとすると、私は理解していないエラーメッセージがあります。ここに私のコードオブジェクトを配列に挿入する

"Error: vendeursList.push is not a function [etc...]" 

を:

HTML:

<div ng-controller='vendeursController'> 
<h2 class='test'>Vendeurs.</h2> 
<table> 
    <thead> 
     <tr><th colspan="4">Liste des vendeurs</th></tr> 
    </thead> 
    <tbody> 
     <tr ng-repeat="vendeur in objVendeur"> 
     <td>{{$index + 1}}</td> 
     <td> 
      {{vendeur.Vendeur.nom}}&nbsp;{{vendeur.Vendeur.prenom}} 
     </td> 
     <td>{{vendeur.mail}}</td> 
     <td>{{vendeur.adresse}}</td> 
     </tr> 
    </tbody> 
</table> 

<form class='simple-form'> 
    <br> 
    <input type="text" ng-model="vendeur.Vendeur.nom" name="nom" value="Nom" required><br> 
    <br> 
    <input type="text" ng-model="vendeur.Vendeur.prenom" name="prenom" value="Prenom" required><br><br> 
    <br> 
    <input type="text" ng-model="vendeur.mail" name="mail" value="Mail" required><br><br>   
    <br> 
    <input type="text" ng-model="vendeur.adresse" name="adresse" value="Adresse" required><br><br> 
    <input ng-click="saveData()" type="submit" value="Submit"> 
</form> 

<pre>nom = "{{vendeur | json}}"</pre> 

JSを:

(function() { 
    'use strict'; 

angular.module('app.vendeurController', ["ngStorage"]). 
controller('vendeursController', function($scope, $http, $localStorage){ 

    $scope.vendeur = {}; 
    var vendeursList = []; 

    $scope.saveData = function() { 
     vendeursList = $localStorage.objVendeur; 
     var nVendeur = angular.copy($scope.vendeur); 
     vendeursList.push(nVendeur); 
     $localStorage.objVendeur = vendeursList; 
    } 

}); 
})(); 

ありがとう!

+3

この行をデバッグします: 'vendeursList = $ localStorage.objVendeur;'。 '$ localStorage.objVendeur'が、配列でないもの、または関数' push'を持たないものを返す可能性は非常に高いです。 – lealceldeiro

+1

新しい仕事のために、私は角度v1を使用する必要があります。 ええ、私は問題が$ localStorageから来ると思います。私が "vendeursList = $ localStorage.objVendeur;"とコメントするとと "$ localStorage.objVendeur = vendeursList;"と入力します。これ以上のエラーはありません。 –

答えて

3

localStorageで項目を取得および設定するには、JSON.stringifyおよびJSON.parseを使用する必要があります。 vendeursListがそれにプッシュする前に空である場合は、あなたのロジックをチェックし、また

(function() { 
     'use strict'; 

    angular.module('app.vendeurController', ["ngStorage"]). 
    controller('vendeursController', function($scope, $http, $localStorage){ 

     $scope.vendeur = {}; 
     var vendeursList = []; 

     $scope.saveData = function() { 
      vendeursList = JSON.parse(localStorage.getItem('objVendeur')); 
      var nVendeur = angular.copy($scope.vendeur); 
      vendeursList.push(nVendeur); 
      localStorage.setItem('objVendeur',JSON.stringify(vendeursList)); 
     } 

    }); 
    })();  

- あなたのようなものを使用することができます。
例:
// localStorageを

から
if(!venduersList){ 
     vendeursList = []; 
    } 
0

を解析した後、私は理由を理解しようとしますが、このコードは良いです。

(function() { 
'use strict'; 

angular.module('app.vendeurController', ["ngStorage"]). 
controller('vendeursController', function($scope, $http, $localStorage){ 

    $scope.vendeur = {}; 
    $scope.objVendeur = []; 

    $scope.saveData = function() { 
     $localStorage.objVendeur.push(angular.copy($scope.vendeur)); 
    } 

    $scope.objVendeur = $localStorage.objVendeur; 

}); 
})(); 
関連する問題