2016-03-28 12 views
0

最近Angularを使い始めました。http:getの応答を別のhtmlページresult.htmlにリダイレクトしようとしています。私は、データを共有するためのサービスを使用:ここでJSONレスポンスを別のhtmlページにリダイレクトする(Angular)

は私のコントローラのコードである:ここで

app.service('sharedProperties', function() { 
    var data; 
    return { 
     getData: function() { 
      return data; 
     }, 
     setData: function(value) { 
      data = value; 
     }, 
    } 
}); 

index.html体である:

<div ng-app="App" ng-controller="controller"> 
    <p> 
     <input type="text" ng-model="username" placeholder="Enter username here" required> 
     <button ng-click="generate()">Generate</button> 
    </p> 

    {{ error }} 
</div> 

ここ

app.controller("controller", function($scope, $http, $window, sharedProperties){ 
    $scope.generate = function(){ 
    $http.get('repositories', {params: { username : $scope.username }}). 
    then(function mySucces(response) { 
     $scope.error = ""; 
     sharedProperties.setData(response.data); 
     $window.location.href = '/result.html'; 
    }, function myError() { 
     $scope.error = "Wrong Username"; 
    }); 
    } 
}); 

app.controller("resultController", function($scope, $window,sharedProperties){ 
    $scope.names = sharedProperties.getData(); 
    $scope.home = function() { 
    $window.location.href = '/index.html'; 
    } 
    }); 

services.jsコードがありますそして、ここには私が応答したいと思うresult.htmlがありますO:

<div ng-app="App" ng-controller="resultController"> 
    <p><button ng-click="home()">Home</button></p> 
    <ul> 
     <li ng-repeat="x in names"> 
      {{ "Name: " + x.name + ", Languages: " + x.languages }} 
     </li> 
    </ul> 
</div> 

controllerのでresultControllerページが結果が示されていないresult.htmlにリダイレクトしかし後に、それを使用することができsharedProperties介して応答データを設定します。

UPDATE

データが2つのコントローラ間で共有されていないと思われる、console.logundefinedを示しています。それは2つの異なるHTMLファイルのためですか?またはredirectのためですか?私はリダイレクトすべてのデータをリセットすることに気づいたので、私はサービスのsessionStorateを使用

UPDATE 2

:ただし

app.service('sharedProperties', function() { 

    return { 
     getData: function() { 
      return sessionStorage.sharedProperties; 
     }, 
     setData: function(value) { 
      sessionStorage.sharedProperties = value; 
     }, 
    } 
}); 

console.log代わりにJSONの値を示し、それは示しています。

"[object Object],[object Object],[object Object],[object Object],[object Object]" 

実際の値は次のようになります。

[{"name":"git-consortium","languages":"No Language Reported"},{"name":"hello-worId","languages":"No Language Reported"},{"name":"Hello-World","languages":"No Language Reported"},{"name":"octocat.github.io","languages":"CSS JavaScript HTML "},{"name":"Spoon-Knife","languages":"CSS HTML "}] 

これについてのご意見はありますか?

+1

あなたの角度のあるプロジェクトの実装は完全に間違っています。最初にangular.jsを読んで学んでください。質問が表示されたらここに尋ねます。 :) –

+0

リダイレクトルートが正しく定義されていることを確認してください。デフォルトのケースにリダイレクトされることがあります。 – lalitpatadiya

+0

(1)コントローラの両方に同じ名前を付ける(2)2つのコントローラ間でデータを共有したいので、どちらかのサービス/ファクトリを使用してください(3)$ window.location.href = 'result。 html '; result.htmlにリダイレクトされ、一度下の式$ scope.names = response.dataにリダイレクトされます。実行されません。 – shreyansh

答えて

0

でも私が得た反応はjsonでしたが、まだangular.toJson()を使ってjsonに変換しなければなりませんでした。ここで

はJSONデータを保存するためのサービスです。

app.service('sharedProperties', function() { 
    return { 
     getData: function() { 
      return angular.fromJson(sessionStorage.sharedProperties); 
     }, 
     setData: function(value) { 
      sessionStorage.sharedProperties = angular.toJson(value); 
     }, 
    } 
}); 

は、だから今でも、別のページにリダイレクトした後、私はまだデータにアクセスすることができます。

関連する問題