Я только недавно начал использовать 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 "}]
Есть мысли по этому поводу?