Перенаправить ответ JSON на другую html-страницу (Angular)

Я только недавно начал использовать Angular и пытаюсь перенаправить ответ http.get на другую html-страницу, которая является result.html. Я использовал сервисы для обмена данными:

Вот мой код контроллера:

  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:

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>

И вот result.html, на который я хочу получить ответ:

<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 устанавливает данные ответа через sharedProperties, чтобы resultController мог их использовать, однако после перенаправления страницы на result.html результат не отображается.

ОБНОВЛЕНИЕ

Кажется, данные не распределяются между двумя контроллерами, console.log показывает undefined. Это из-за двух разных html-файлов? или это из-за redirect?

ОБНОВЛЕНИЕ 2

Я понял, что редирект сбросит все данные, поэтому использую sessionStorate для сервиса:

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 "}]

Есть мысли по этому поводу?


person secret    schedule 28.03.2016    source источник
comment
Ваша угловая реализация проекта совершенно неверна. Сначала прочтите и узнайте об angular.js. тогда если возникнут вопросы задавайте сюда. :)   -  person M. Junaid Salaat    schedule 28.03.2016
comment
пожалуйста, убедитесь, что ваш маршрут перенаправления определен правильно, когда-нибудь он будет перенаправлять на случай по умолчанию..?   -  person lalitpatadiya    schedule 28.03.2016
comment
(1) Вы даете одно и то же имя для обоих контроллеров. (2) Вы хотите обмениваться данными между двумя контроллерами, поэтому используйте либо сервисы/фабрики, прочитайте их. (3) $window.location.href = 'result.html '; перенаправит на result.html и однажды перенаправит приведенное ниже выражение $scope.names = response.data; не будет казнен.   -  person shreyansh    schedule 28.03.2016
comment
но даже если вы хотите реализовать таким образом, вы можете использовать $rootScope.names=response.data, а затем перенаправить на result.html, просто трюк, но это может иметь плохие последствия.   -  person shreyansh    schedule 28.03.2016
comment
спасибо за ответ @shreyansh   -  person secret    schedule 28.03.2016
comment
@shreyansh Я обновил вопрос с вашим предложением, можете ли вы сказать мне, что с ним не так?   -  person secret    schedule 28.03.2016


Ответы (1)


Несмотря на то, что ответ, который я получил, был json, мне все равно пришлось преобразовать его в json, используя angular.toJson().

Вот сервис для сохранения данных json:

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

Так что теперь даже после перенаправления на другую страницу я все еще могу получить доступ к данным.

person secret    schedule 28.03.2016