Изменить путь маршрута без перезагрузки контроллера и шаблона в маршруте angularjs

Привет всем разработчикам angularjs, я следил за документом ng (ссылка). много раз искал, но не нашел решения, которое помогло бы мне правильно. Мне нужно изменить маршрут без перезагрузки контроллера и шаблона. Я написал маршрут, который выглядит следующим образом:

             $routeProvider
             .when('/page1', {
                 templateUrl: 'page1',
                 controller: 'page1Ctrl',
                 caseInsensitiveMatch: true,
                 reloadOnSearch: false
             })
             .when('/page2', {
                 templateUrl: 'page2',
                 controller: 'page2Ctrl',
                 caseInsensitiveMatch: true,
                 reloadOnSearch: false
             })
            .when('/page3', {
                templateUrl: 'page3',
                controller: 'page3Ctrl',
                caseInsensitiveMatch: true,
                reloadOnSearch: false
            }).otherwise({ redirectTo: '/index' });

Более того, сначала я перехожу на страницу1, затем на страницу2, затем на страницу3, после этого теперь я хочу перейти на страницу1 без перезагрузки или вызова страницы1Ctrl и шаблона страницы1. Пример: предположим, что когда я был страницей 1, в то время я работал примерно так, как я выбрал запись ng-grid с размером страницы 3, и я ввел некоторые поля. После этого я перехожу на страницу 3, затем снова иду на страницу 1. Теперь на этот раз я хочу увидеть страницу1, что я выбрал в записи сетки и что я ввел. Как я могу это решить? Спасибо.


person Shohel    schedule 24.08.2014    source источник


Ответы (2)


Я хочу предложить использовать Angular Ui.router

у вас будет возможность изменить состояние маршрутов, для получения дополнительной информации ознакомьтесь с документацией

person Narek Mamikonyan    schedule 24.08.2014
comment
Спасибо @Нарек Мамиконян. Я попробую это. но есть ли у вас пример для такого типа работы? - person Shohel; 24.08.2014
comment
Если вы проверите документ, я думаю, вы найдете его :) - person Narek Mamikonyan; 24.08.2014
comment
Хорошо @Нарек Мамиконян. - person Shohel; 24.08.2014
comment
Привет @Narek Mamikonyan, я не видел никакой информации, которая могла бы мне помочь. - person Shohel; 24.08.2014
comment
Там есть абсолютные маршруты (^). Этот абсолютный маршрут не работает. - person Shohel; 24.08.2014

Чтобы сохранить данные при удалении от контроллера и обратно, рекомендуемый подход Angular заключается в использовании сервисов. Посмотрите это выступление на NG-Conf: https://www.youtube.com/watch?v=62RvRQuMVyg< /а>.

Чтобы сохранить поля ввода и индекс подкачки при выходе из page1Ctrl и последующем возврате, например, вы можете создать pagingModelService.

function PagingModelService($rootScope)
{
   var pagingModelService = {};

   ////////////////////
   // persisted data //
   ////////////////////
   pagingModelService.pagingIndex;
   pagingModelService.field1;
   pagingModelService.field2;

   ////////
   //Init//
   ////////
   return(pagingModelService);

}

Затем внедрите службу в контроллер и установите значения $scope для службы:

function Page1Ctrl($scope, pagingModelServiceModel)
{
   ///////////////////////////////////////////////////
   //set local $scope variables to persisted service//
   ///////////////////////////////////////////////////
   $scope.pageIndex = pagingModelService.pagingIndex;
   $scope.field1 = pagingModelService.field1;
   $scope.field2 = pagingModelService.field2;
}

Кроме того, вы можете заглянуть в angular-local-storage для сохранения данных: https://github.com/grevory/angular-local-storage

person Scott Rice    schedule 24.08.2014
comment
Спасибо за ваши хорошие концепции @Scott Rice. Но я хочу управлять маршрутом, не создавая службу или фабрику. - person Shohel; 24.08.2014