Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Angular2 и сохранение состояния при переходах / 17 сообщений из 17, страница 1 из 1
25.01.2017, 12:27
    #39390968
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
Всем привет. Столкнулся с проблемой: при переходе назад/вперёд (кнопки браузера) не сохраняются состояния страниц.
Проблема в том, что при переходе по маршрутам компоненты уничтожаются и заново создаются. Соответственно у DetailsPage вызывается ngOnInit(), в котором происходит ленивая загрузка объектов. После нажатии на элементе (чтобы открыть DetailPage) происходит ngOnDestroy(). При возвращении из DetailPage снова вызывается ngOnInit() у DetailsPage.
Как сделать, чтобы при переходах angular мог хранить состояния?

app.module.ts
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
//Маршруты
const appRoutes: Routes = [
    { path: '', redirectTo: '/details', pathMatch: 'full' },
    { path: 'details', component: DetailsPage },
    { path: 'details/:id', component: DetailPage },
    { path: 'about', component: AboutPage },
    { path: '**', component: NotFoundPage }
];
@NgModule({
    declarations: [
        AppComponent,
        DetailsPage,
        DetailPage,
        AboutPage,
        NotFoundPage,
        FilterListComponent,
        DetailListComponent
    ],
    imports: [
        RouterModule.forRoot(appRoutes),

    ],
    providers: [
        DetailService,

    ], 
    bootstrap: [AppComponent]
})
export class AppModule { }



app.component.html
Код: javascript
1.
<router-outlet></router-outlet>



details.ts
Код: javascript
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
@Component({
    selector: 'details-page',
    templateUrl: './details.html'
})
export class DetailsPage implements OnInit, OnDestroy {

    ngOnInit() {
        console.error("ngOnInit");
        this.loadData();
    }

    ngOnDestroy() {
        console.error("ngOnDestroy");
    }

    // Кнопка перехода на новую страницу
    goPage(id: any) {
        console.error(id);
        this.router.navigate(
            ['/details', id]
        );
    }

}



details.html
Код: javascript
1.
2.
3.
4.
5.
        <!--Фильтры-->
         <filter-list #filterList (onSearchButtonPressed)="onSearch($event)"></filter-list>                

        <!--Список-->
        <detail-list (onDetailPressed)=goPage($event)></detail-list>




Использую версию @angular/core": "^2.3.1", "@angular/router": "^3.3.1".
...
Рейтинг: 0 / 0
25.01.2017, 13:12
    #39391047
OldBoyOdeSu
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
sanringo,

Не знаю как в 2 версии, а в 1.* при смене урла (кнопки назад/вперёд) полностью перезагружается контроллер.
Т.е. аналогично твоему случаю, и приходится в $destroy у тебя видимо это ngOnDestroy() делать некий снапшот (только необходимые для восстановления состояния данные, например номер текущей строки, количество записей на странице, текущая страница в пагинаторе и т.д.). Снапшот хранится с синглтоне (в 1.* это factory) а в ngOnInit всё это накатывать с нуля.
Другого способа я не нашёл.
...
Рейтинг: 0 / 0
25.01.2017, 13:40
    #39391085
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
...
Рейтинг: 0 / 0
26.01.2017, 11:12
    #39391887
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
hVostt,
Спасибо, получилось
...
Рейтинг: 0 / 0
02.02.2017, 18:27
    #39397516
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
На мастер странице таблица с очень многими записями. Как сделать чтобы при возвращении назад также запоминалось положение курсора?
Сейчас при возврате показывается сверху. Приходится прокручивать страницу вниз, чтобы посмотреть какую я запись выбрал.
...
Рейтинг: 0 / 0
02.02.2017, 18:40
    #39397530
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
sanringo,

Может стоить изменить подход? Например, при выборе записи открывать действие, связанное с записью, не на другой странице, а в модальном окне или открывать внутри приложения вкладку? Это вам здорово упростит жизнь. Полностью восстанавливать состояние вплоть до положения элементов может быть затратным.
...
Рейтинг: 0 / 0
02.02.2017, 18:47
    #39397534
sanringo
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
увы, таковы требования
...
Рейтинг: 0 / 0
02.02.2017, 19:25
    #39397557
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
sanringo,
открыть можно и в другом окне , прежнее не трогать — не нужно и восстанавливать

восстанавливать можно с помощью якоря
...
Рейтинг: 0 / 0
02.02.2017, 19:29
    #39397561
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
sanringoувы, таковы требования

Значит сохранять положение, ибо оно нигде не хранится отдельно.
...
Рейтинг: 0 / 0
02.02.2017, 19:30
    #39397562
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
вадяоткрыть можно и в другом окне , прежнее не трогать — не нужно и восстанавливать

восстанавливать можно с помощью якоря

Ты как обычно несёшь оголтелую чушь, и не имеешь ни малейшего понятия, о чём вообще идёт речь. Какой якорь? Какое другое окно? Иди уже проспись.
...
Рейтинг: 0 / 0
02.02.2017, 20:06
    #39397588
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
hVostt,
чтоб перейти на позицию в длинной странице есть такой термин якорь. #idэемента
если надо сохранить состояние страницы, при переходе на новую, то вместо перехода можно открыть новую в новом окне и старое будет «сохранено»
...
Рейтинг: 0 / 0
02.02.2017, 20:26
    #39397592
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
вадячтоб перейти на позицию в длинной странице есть такой термин якорь. #idэемента

Вот об этом я и говорю. Речь не идёт о позиции на странице. Но тебе не понять, так ты не знаешь даже о чём идёт речь. А не знаешь ты по одной простой причине: у тебя нет опыта в разработке веб-приложений.

вадяесли надо сохранить состояние страницы, при переходе на новую, то вместо перехода можно открыть новую в новом окне и старое будет «сохранено»

Незачем плодить окна и табы, если всё гораздо эффективней можно реализовать на одной странице. Ну только, если по-другому ты просто не умеешь и не знаешь как это сделать.
...
Рейтинг: 0 / 0
02.02.2017, 21:08
    #39397605
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
hVostt
sanringoНа мастер странице таблица с очень многими записями. Как сделать чтобы при возвращении назад также запоминалось положение курсора?
Сейчас при возврате показывается сверху. Приходится прокручивать страницу вниз, чтобы посмотреть какую я запись выбрал.
как бы самое то с помощью якоря переходить
или с помощю скрола
я это с помощью якоря элементарно делаю
...
Рейтинг: 0 / 0
02.02.2017, 21:37
    #39397621
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
вадякак бы самое то с помощью якоря переходить
или с помощю скрола
я это с помощью якоря элементарно делаю

Потому что ты делаешь унылые сайты, а не приложения.
...
Рейтинг: 0 / 0
02.02.2017, 22:07
    #39397648
skyANA
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
sanringoНа мастер странице таблица с очень многими записями. Как сделать чтобы при возвращении назад также запоминалось положение курсора?
Сейчас при возврате показывается сверху. Приходится прокручивать страницу вниз, чтобы посмотреть какую я запись выбрал.
Записать в историю нужный урл.
...
Рейтинг: 0 / 0
03.02.2017, 07:08
    #39397738
вадя
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
hVosttПотому что ты делаешь унылые сайты, а не приложения
чья бы корова мычала...

новое в диагностике!!!!
если у вас что-то не работает - значит у вас не унылый сайт , а приложение. надо срочно переделывать на унылый сайт и всё будет работать
...
Рейтинг: 0 / 0
03.02.2017, 13:33
    #39398125
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Angular2 и сохранение состояния при переходах
вадячья бы корова мычала...

Насчёт коровы верное замечание, ты же лезешь в тему со своими советами, в которой у тебя нет опыта.
...
Рейтинг: 0 / 0
Форумы / HTML, JavaScript, VBScript, CSS [игнор отключен] [закрыт для гостей] / Angular2 и сохранение состояния при переходах / 17 сообщений из 17, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]