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

0

Я только недавно начал использовать 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 что я хочу, чтобы ответ 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 "}]

Любые мысли по этому поводу?

  • 1
    Ваша угловая реализация проекта совершенно неверна. Пожалуйста, сначала прочитайте и узнайте о angular.js. тогда, если появятся какие-либо вопросы, задавайте здесь :)
  • 0
    пожалуйста, убедитесь, что ваш маршрут перенаправления определен правильно, когда он будет перенаправлен в регистр по умолчанию ..?
Показать ещё 4 комментария
Теги:
session-storage

1 ответ

0
Лучший ответ

Даже несмотря на то, что ответ, который я получал, был 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);
        },
    }
});

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню