У меня есть page1.html список объектов, когда пользователь нажимает на один объект, веб-сайт должен перейти на другую страницу и отобразить детали объекта.
1.HTML Page ahs table, каждая строка - объект:
<tr ng-repeat="abjcet in nc.object">
<td>{{object.title}}</td>
</tr>
2. Когда пользователь нажимает на заголовок, тот же объект должен быть перенесен на следующую страницу HTML, и я попробовал это, и я возвращаю объект, но я не знаю, как его сохранить и использовать на следующей странице HTML:
<tr ng-repeat="object in nc.objects">
<td ng-click="getById(object.id)">{{object.title}}</td>
</tr>
мой контроллер:
(function () {
'user strict';
angular.module('app').controller('myController', myController);
myController.$inject = ['$http', '$scope' ];
function myController($http , $scope ) {
var nc = this;
nc.objects = [];
nc.object = null;
nc.getById = getById ;
init();
function init(){
getAll();
}
function getAll()
{
var url = "/getAll/";
var Request = $http.get(url);
Request.then(function (response) {
nc.objects = response.data;
});
}
function getById(id) {
var url = "/findById/"+id;
var Request = $http.get(url);
Request.then(function (response) {
nc.object = response.data;
});
}
}
})();
Вы можете использовать localStorage, если вам нужно перейти на другую страницу или использовать SPA (приложение для одиночной страницы) с помощью службы, которая поделилась вашими данными на всех ваших контроллерах.
// Save the title
localStorage.setItem('title', $scope.title);
// Retrieve the title
$scope.title = localStorage.getItem('title');
Несколько решений
Пример:
myApp.controller('MainCtrl', function($scope, localStorageService) {
// setter
localStorageService.set('title', 'value');
// getter
var title = localStorageService.get('title');
});
Пример:
//factory
myApp.factory('Data', function() {
var data = {};
return {
get :get,
set : set
};
// setter
function set(key, val){
data[key] = val;
}
// getter
function get(key) {
return data[key] || null;
}
});
myApp.controller('MainCtrl', function(Data) {
// setter
Data.set('title', 'value');
// getter
var title = Data.get('title');
});
Если ваше приложение HTML completely a single page application
, добавьте $rootScope
в myController.$inject
и затем сохраните его в $rootScope
, к которому можно получить доступ на нескольких страницах.
Вместо этого, если у вас есть service
которая используется обоими контроллерами на разных страницах, реализуйте getters and setters
в service
для этой переменной.
Надеюсь, это поможет вам!
$rootScope
для поддержания состояний любого рода. События - это единственное, для чего следует использовать$rootScope
.