0

私はAngular JSでアプリケーションを構築していますが、後で取得するためにlocalStorageに特定のデータを永続化したいとします。問題は、それを達成するためのコードに問題があることです。あなたがボタンをクリックしたときにアシスタントをイベントに追加しようとしましたが、Inspectorは常にこのエラーを表示します: SyntaxError:JSONの位置0の予期しないトークンu Object.parse(native)。Angular JSのLocalStorageModuleでデータを保存する

私はapp.jsから分離されたcontroller.jsを持っていて、次に私のapp.moduleにコントローラを注入しました。

あなたが私を助けることができれば素晴らしいと思います。前もって感謝します。

'use strict'; 
 

 
/* Controllers */ 
 

 
angular.module('Erasmore.controllers', []) 
 
    .controller('Posts', ['$scope', '$http', 
 
    function($scope, $http, localStorageService) { 
 
     $http.get("json/posts.json").success(function(data) { 
 
     $scope.posts = data; 
 
     }); 
 

 
     $scope.assistants = [{ 
 
     id: 1, 
 
     name: "James Smith", 
 
     nationality: "English" 
 
     }, { 
 
     id: 3, 
 
     name: "Juan García", 
 
     nationality: "Spanish" 
 
     }, { 
 
     id: 3, 
 
     name: "Eduardo Cruz", 
 
     nationality: "Spanish" 
 
     }, { 
 
     id: 4, 
 
     name: "Jurgen Low", 
 
     nationality: "German" 
 
     }, ]; 
 

 
     var newParticipant = localStorage['assistantList']; 
 
     if (newParticipant !== undefined) { 
 
     $scope.newAssistant = JSON.parse(newParticipant); 
 
     } 
 

 
     $scope.newAssistant = {}; 
 

 
     $scope.addAssistant = function() { 
 
     $scope.assistants.push($scope.newAssistant); 
 
     $scope.newAssistant = ""; 
 
     localStorage['assistantList'] = JSON.stringify($scope.newAssistant); 
 
     console.log(localStorage); 
 
     }; 
 

 
    } 
 
    ])
<div> 
 
    <p>Are you coming?</p> 
 
    <input placeholder="Enter your name" id="name" type="text" class="validate" ng-model="newAssistant.name"> 
 
    <input placeholder="Enter your nationality" id="nationality" type="text" class="validate" ng-model="newAssistant.nationality"> 
 
    <button class="waves-effect waves-light btn" ng-click="addAssistant()">Confirm</button> 
 
    <button class="waves-effect waves-teal btn-flat modal-trigger">See Assistants</button> 
 
    <ul> 
 
    <li id="asistentes" ng-repeat="assistant in assistants">{{assistant.name}} <span>-</span> {{assistant.nationality}}</li> 
 
    </ul>

+0

'' localStorageService''はこのようにあなたのコントローラーを追加します。 '' Posts '、[' $ scope '、' $ http '、' localStorageService '、 function($ scope、$ http、localStorageService){' –

+0

ええ、後で気付いたが、まだ動作しない... –

答えて

0

問題は、あなたが唯一の注入されている

.controller('Posts', ['$scope', '$http', 
function($scope, $http, localStorageService) { 

のlocalStorageサービスを注入していないということである。ここでは

は私にエラーを与えるコードの一部であります$ scope & $ http

+0

はい、私はlocalStorageServiceを注入しましたが、どちらも動作しません。コンソールで私に同じエラーが表示されます: –

+0

SyntaxError:JSONの位置0の予期しないトークンu Object.parse(ネイティブ) –

+0

'JSON.parse'を使って解析しようとしています。実際には有効なjsonオブジェクトではありません。たとえば' $ scope.newAssistant = ""; 'は$ scope.newAssistant = {};です。 – harishr

関連する問題