Я полагаю, что при обратном вызове вашего метода $scope.generateJSON
вы перенаправляете на страницу результатов outputOffers (где вы хотите отобразить данные json ответа) и передаете данные json в качестве параметра.
Затем в вашем resultsController вы можете назначить данные json (отправленные в качестве параметра) переменной $scope.greeting
для использования в представлении outputOffers.
Вам необходим сервис routeParams для передачи параметров между представлениями, и вам нужно будет вставить его в свой ResultsController.
Вам также понадобится сервис $location
в вашемpage2Controller (для выполнения перенаправления), поэтому добавьте его следующим образом:
myApp.controller("page2Controller", function($scope, $location){...
Ваш метод generateJSON в контроллере page2 будет выглядеть следующим образом:
$scope.generateJSON = function(){
generateIdForComponents();
addRestrictions();
// REST
data = angular.toJson($scope.schema, true);
headers= {
'Content-Type': 'application/json',
'Cache-Control':'no-cache',
'Access-Control-Allow-Origin': '*'
};
$http.post('http://127.0.0.1:5000/re/z3', data, {headers:headers}).
then(function(response) {
console.log("Merge post ", response.data);
//redirect to the outputOffers view, passing the json data as a parameter
$location.path('results').search({jsonData: response.data });
});
}});
resultsController
Сначала добавьте $routeParams
в свой ResultsController следующим образом, чтобы мы могли получить любые параметры, отправленные с URL (замените myApp
на имя вашего приложения):
myApp.controller("resultsController", function($scope, $routeParams){...
Использовать анонимную функцию вresultsController, который проверяет, существует ли параметр jsonData (который мы отправили с контроллера page2).Если он существует, мы присваиваем его переменной $scope.greeting
(function() {
if($routeParams.jsonData == null || $routeParams.jsonData === ""){
//If the jsonData is not set or if it doesnt contain a value (i.e is the empty string) then redirect to the page2 view.
$location.path('topage2');
}else{
//the jsonData parameter does exist so assign it to our scope.greeting variable so we can use it in our view.
$scope.greeting = $routeParams.jsonData;
//log the data to make sure it was passed as parameter:
console.log($scope.greeting);
}
})();
. Затем в представлении outputOffers.html вы можете использовать переменную $scope.greeting
.Например, если json содержит свойство «title» и «message», тогда мы можем сделать следующее:
<p>{{greeting.title}}</p>
<p>{{greeting.message}}</p>
Обновление:
После просмотра фрагмента вашего json в вашем комментарииВы можете сделать следующее, чтобы отобразить его:
<div ng-repeat="g in greeting">
<p>id: {{g.id}}</p>
<p>clockspeed: {{g.offer.clockSpeed}} </p>
</div>