Каков рекомендуемый подход для поддержания состояния просмотра с использованием ionicframework/angularjs?

Я новичок в Ionic Framework и AngularJs.

Приложение, над которым я работаю, имеет представление, в котором пользователь может выполнять поиск, а результаты представлены в виде списка. Когда пользователь щелкает один из элементов списка, он переходит к просмотру сведений. Когда пользователь нажимает кнопку «Назад» в строке заголовка, текстовое поле поиска и список результатов пусты, и ему приходится искать снова.

Каков рекомендуемый подход к тому, чтобы, когда пользователь нажимает кнопку «Назад» в представлении сведений, отображать представление поиска, заполненное предыдущим поисковым запросом и результатами? (было бы неплохо восстановить положение прокрутки)

Я знаю, что могу просто сохранить эту информацию в каком-нибудь сервисе, но это звучит как много работы.

Есть ли какие-нибудь другие классные вещи, такие как служба состояний просмотра или что-то еще, что может сделать это для меня?


person Auresco82    schedule 29.03.2014    source источник
comment
FYI Это решено в последней бета-версии с использованием кэшированных представлений (выпущено вчера).   -  person colllin    schedule 17.12.2014


Ответы (1)


Я знаю, что могу просто сохранить эту информацию в каком-нибудь сервисе, но это звучит как много работы.

В самом деле?

app.factory('searchData', function() {
  return {
    searchTerm: '',
    results: []
  };
});

вот как это делается. Но похоже, что на самом деле вы ищете лекарство от лени...

person Gil Birman    schedule 30.03.2014
comment
Хорошо, хорошо, почему ты так сердишься? :) Я сделал так, как вы предложили, но поскольку это так просто, фреймворк может сделать это за нас. - person Auresco82; 15.05.2014
comment
После того, как вы напишите код, он сделает это за вас :) Если вы хотите что-то еще проще, используйте вместо этого app.constant('searchData', { searchTerm: '', results:[] }) - person Gil Birman; 16.05.2014
comment
Я столкнулся с той же проблемой. В других мобильных платформах, которые я использовал, вы могли кэшировать состояние представления списка при переходе к деталям, и когда вы возвращались, оно было восстановлено для вас. Так что похоже, что в Ionic вам нужно сохранять и восстанавливать состояние вручную — это точно так? Если это так, подход Гила звучит хорошо, однако я надеялся на рамочный подход к этому. FWIW - это обсуждается здесь: forum.ionicframework.com/t/save -list-view-state/1554 Переход на страницу сведений уничтожит область действия контроллера списка, что имеет смысл. Я также кэширую вызовы $resource. - person Rodney; 26.09.2014
comment
Я реализовал решение, используя $rootScope для сохранения и восстановления состояния между представлениями и ТАКЖЕ в службе (с помощью Getter и Setter) - вот более подробное объяснение между ними: stackoverflow.com/questions/11938380/ - кто-то нашел это в часто задаваемых вопросах Agnular о $rootScope: если у вас возникнет соблазн поместите функцию в $rootScope, почти всегда лучше поместить ее в службу, которую можно внедрить туда, где она нужна, и которую легче протестировать. И наоборот, не создавайте службу, единственная цель которой в жизни - хранить и возвращать биты данных. Так что это зависит;) - person Rodney; 27.09.2014
comment
Последний комментарий: Согласно рекомендациям, я храню только SearchTerm, а не сами данные, которые кэшируются. Итак, теперь я не уверен, использовать ли путь $rootScope или Service, так как Angular FAQ ясно об этом. Однако теперь я знаю, как сделать оба варианта, и это хорошо. - person Rodney; 27.09.2014