2017-05-13 9 views
0

私は角度を知ろうとしています。現在、私はすでにJSONからデータを取得しています(私はローカルのJSONを使用しています)。私はJSONから1つの配列を削除しようとしますが、その動作はしますが、ページを更新した後に、削除された配列が再び戻ってきます。配列を削除した後にJSONを更新する方法は?内部のデータを削除した後にjsonを更新してください

customer.html

<tr ng-repeat="experience in experiences"> 
      <td>{{experience.no}}</td> 
      <td>{{experience.name}}</td> 
      <td><button ng-click="deleteItem(experience)" class="btn btn-danger">-</button></td> 
</tr> 

main.js

resolve:{ 
     experiences:['$http',function($http){ 
     return $http.get('scripts/customer.json').then(function(response){ 
      return response.data 
      }) 
     }] 
    } 

顧客JSON

[ 
    { 
    "no":1, 
    "name": "Sarah", 
    }, 
    { 
    "no":2, 
    "name": "Tommy", 
    } 
] 

customerCtrl.js

angular.module('app').controller('customerCtrl',['$scope','experiences',function($scope,experiences){ 
$scope.experiences= experiences; 


$scope.deleteItem =function(experience){ 
    var index = $scope.experiences.indexOf(experience); 
    alert("Deleting DATA: "+ index); 
    $scope.experiences.splice(index,1); 
}; 

}]);

+0

あなたは、サーバーへの削除済みアイテムを送信するために、それが – charlietfl

答えて

0

javascriptを使用してファイルにデータを格納しようとしていますが、これは安全でないと判断され、実装が難しいと考えられています。

代わりにLocalStorageを使用することをお勧めします。ここで

angular.module('app').service('LocalStorage', function(){ 

return { 
    save: function(data) { 
    localStorage.setItem('data',data); 
    }, 
    get: function(){ 
    return localStorage.getItem('data'); 
    } 
}; 
}); 

コントローラ

// notice that I injected LocalStorage in controller 
angular.module('app').controller('dataPengalamanCtrl',['$scope','experiences',function($scope,experiences, LocalStorage){ 
$scope.experiences= experiences; 


$scope.deleteItem =function(experience){ 
    var index = $scope.experiences.indexOf(experience); 
    alert("Deleting DATA: "+ index); 
    $scope.experiences.splice(index,1); 

    // First transform you're json to a string  
    var stringifiedData = JSON.stringify($scope.experiences); 

    // from there we save data to localStorage 
    LocalStorage.save(stringifiedData); 
}; 

// if you need, you can load data using : 
$scope.data = LocalStorage.get(); 

のlocalStorageサービス(テストされていない)、あなたのコントローラで使用できるサービスの一例であるいけない最初のlocalStorageであなたのJSONを保存するのを忘れ、たとえば、次のようなファイルを使用します。

init.js

var json = [ 
    { 
    "no":1, 
    "name": "Sarah", 
    }, 
    { 
    "no":2, 
    "name": "Tommy", 
    } 
]; 

var strData = JSON.stringify(json); 
localstorage.setItem('data', strData); 

EDIT あなたはすでにmyjson.comであなたのJSONを保存、およびURLは、その後https://api.myjson.com/bins/8hghdであると仮定すると、myjson.com

のようなリモートサーバーと行きたい場合は:を使用してJSONの使用$http.putを更新するには$http.get('https://api.myjson.com/bins/8hghd').success(/*...*/).error(/*..*/);

を使用し、あなたのJSONを取得するに

データとして、あなたのJSON(文法はあなたのAngularJSのバージョンに依存し、hereを参照してください)

は、APIドキュメントを見てください:http://myjson.com/api

+0

保存されている場所からそれをサーバーを削除している必要がありますどうすればあなたはhttp://myjson.com/のようなオンラインサーバーに置くのですか? – GerryofTrivia

+0

私はmyjson.comのために私の答えを編集しました – gabriel

+0

私は私のjsonのデータの一部を削除しようとします。私が削除をクリックすると、データはなくなります。しかし、私はそのカムバックをリフレッシュします。なぜデータはまだ私のjsonにありますか? – GerryofTrivia

関連する問題