Я реализовал приложение, в котором я показываю список результатов, затем я разрешаю пользователю выбирать строки для сравнения и показывать дополнительные данные о них.Сохраняйте данные, когда пользователь возвращается к предыдущему виду - Angularjs
Я использую angular ui route
, и у меня есть 2 вида и 2 контроллера по одному для каждого, поэтому я ищу лучший способ сохранить информацию в первом представлении (где у меня есть все результаты перед тем, как идти к представлению сравнения), когда пользователь возвращается к первому виду.
До сих пор, что я пытался это использовать $localstorage
, но в первом взгляде у меня есть форма, где пользователь может фильтровать критерии поиска, а также у меня есть некоторые <select></select>
которые являются нагрузками с помощью ajax
аукнется, так .. с $localstorage
Я сохраняю информацию, но не задаю детали формы для select input
, потому что вызов ajax не выполнен, и я не хочу, чтобы локальное хранилище всегда сохранялось только в том случае, когда пользователь вернулся к предварительным просмотрам.
Ниже вы можете увидеть настройки для angular route ui
:
.state('deposit', {
url: '/deposit',
templateUrl: './app/components/deposit/index.html',
views: { "" : { templateUrl: './app/components/deposit/index.html' },
"[email protected]": { templateUrl: "./app/components/deposit/search.html",
controller: "DepositSearchController"}
}
})
.state('depositcomparison', {
url: "/deposit/comparison",
params: {
ids: null,
depositSearchData: null
},
templateUrl: './app/components/depositComparison/depositComparisonView.html',
controller: 'DepositComparisonController'
})
Что такое правильный способ сохранить данные только тогда, когда я вернулся с точки зрения сравнения с точки зрения результата?
есть ли способ лучше, чем localstorage
?
Спасибо.
/*********** Обновление ***********/ /*********** Проблема с ajax **** *******/
Получить данные для выбора:
//...
$http.get(window.serviceUrl + '/api/institute').
success(function(data){
$scope.institutes = data.content;
$scope.institutes.push({id: '0', name: 'All'});
$localstorage.setObject('instituteData', $scope.institutes);
}).
error(function(data){
console.log('Error');
});
//..
Проверить localstorage
:
//..
angular.element(document).ready(function() {
if ($localstorage.getObject('instituteData').length !== 0) {
$scope.institutes = $localstorage.getObject('instituteData');
}
//else call the ajax
//..
});
Html:
<label for="forinstitute">Account Type</label>
<select id="instituteValue" class="form-control" ng-model="institute.id">
<option value=""> Select account</option>
<option ng-repeat="institute in institutes | orderBy:'name'" value="{{institute .id}}">{{institute .name}}</option>
</select>
/********************************************** **********/
может быть решением проблемы $watch
??
Использование LocalStorage – Fals
Вы должны определить маршрут, устраняющий список результатов, как родитель маршрута, который делает сравнение (убедитесь, что вы реализуете Решимость часть вашего ui-router, чтобы получить список результатов). Затем этот список результатов будет доступен для детского маршрута (сравнение), и когда вы будете перемещаться между ними, перезагрузка не понадобится. – natwallbank
Ну ..почему localstorage лучший вариант, и как я могу исправить проблему с помощью вызова ajax? @Fals – gon250