2017-04-01 15 views
1

プロジェクトとして、私はAngularを使用して小規模なアプリケーションを作成するように求められました。 localstorageのために私はサービスとして別のjsを使いたいと思う。ローカルストレージ用の角度サービス

私がしようとしているのは、コントローラページを使用して、htmlページにサービスを使用してlocalstorageを呼び出す機能を与えることです。この理由は、複数のhtmlページからlocalstorageにアクセスしたいからです。

下記のコードを投稿しており、大変助かりました。

profilecontroller:

app.controller("ProfileController", function($scope, DataService) { 
    $scope.profile = DataService.getProfile(); 
}); 

profilehtml:

<html> 
<head> 
    <link rel="stylesheet" href="CSS/stylesheet.css"> 
</head> 

<body> 
    <div class="page"> 
     <h1> Overflow test for longer pages </h1> <br> 

     <div id = "textholder" ng-repeat="data in profile"> 
      <span>{{data.id}}</span> 
     </div> 
    </div> 
</body> 

サービス:

app.service("DataService", function(){ 
    console.log("DataService"); 

    var localProfile = JSON.parse(localStorage.getItem("profile")); 

    if(localProfile != undefined && localProfile.length>0) 
    { this.profiles = localProfile; } 

    else { 
    this.profile = [ 
     { id: "1526", username: "berserk",  password: "berserk", age: "31",   sex: "male"}, 
     { id: "1358", username: "Johnathan", password: "test",  age: "17",   sex: "male"}, 
     { id: "2539", username: "Britney",  password: "test",  age: "18",   sex: "female"}, 
     { id: "1486", username: "Kevin",  password: "test",  age: "7",   sex: "male"}, 
     { id: "7777", username: "jesus",  password: "holy",  age: "unknown",  sex: "male"}, 
     { id: "6666", username: "satan",  password: "hell",  age: "unknown",  sex: "unknown"} 
    ]; 
    } 

    this.getProfile = function() { 
    return this.profile; 
    } 
}); 

答えて

1

上記のコードでは、いくつかのミスがあり、

(i)DataServiceをコントローラに注入する必要があります。それは私がのlocalStorageの目的が表示されていない$スコープ

app.service("DataService", function() { 
    console.log("DataService"); 
    var localProfile = JSON.parse(localStorage.getItem("profile")); 
    var profiles = JSON.parse(localStorage.getItem("profile")); 

    if (localProfile != undefined && localProfile.length > 0) { 
    this.profiles = localProfile; 
    } else { 
    this.profiles = [{ 
     id: "1526", 
     username: "berserk", 
     password: "berserk", 
     age: "31" 
    }, { 
     id: "1358", 
     username: "Johnathan", 
     password: "test", 
     age: "17" 
    }, { 
     id: "2539", 
     username: "Britney", 
     password: "test", 
     age: "18" 
    }, { 
     id: "1486", 
     username: "Kevin", 
     password: "test", 
     age: "7" 
    }]; 
    } 

    this.getProfile = function() { 
    return this.profiles; 
    } 
}); 

DEMO

+0

あなたが示唆したように、私は確かに私が以前に遭遇した問題の一部を解決するよう、コードを変更します。上記のコードを参照してください(エラーは表示されません)。 しかし、今でもh1テキストだけを表示し、私が呼び出しようとしているデータではないページの問題が発生します。どのようなアイデアを解決することができますか? –

+0

なぜあなたはどうしようとしていますか? getUser:データ?あなたのHTMLにいくつかの問題があります。何を表示する必要があるのか​​わかりません。 – Sajeetharan

+0

これはもう少し前に作ったフィルタです。それは自己製フィルターで作業するための要件の1つでしたので、作成しました。これは以前は機能していましたが、それはデータベースをコントローラーに入れるときでした。 私がしようとしていることの基礎は、どのような方法でもデータを表示することです。今のところ私がそれを表示する方法は、私がそれを見ることができる限り興味深いものではありません。 –

0

を使用せずにいると、あなたがいないので、

(ⅱ)あなたは、プロファイルを返すことができます。それを初期化しますが、初期化されたプロファイルを返します。配列全体を渡さない限り、プロファイルを追加することに決めた場合、情報が失われる可能性があります。またlocalProfileプロファイル用のキーが変数が同じ、すなわちプロファイル

関連する問題