更改路径路径,而无需在angularjs路由中重新加载控制器和模板

时间:2014-08-24 06:03:37

标签: angularjs angularjs-routing

大家都是angularjs开发人员,我已经关注了ng文档(link)。我已多次搜索但是我没有找到任何可以帮助我的解决方案。我需要在不重新加载控制器和模板的情况下更改路径。我写了一条如下所示的路线: -

             $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' });

此外,首先我转到page1然后page2然后page3之后我现在想要转到page1而不重新加载或调用page1Ctrl和page1模板。示例:假设当我是page1的那段时间我工作的时候我已经选择了一个ng-grid记录,它是分页大小3并且我输入了一些字段。之后我去了page3然后我再次进入page1。现在这次我想看看page1我选择的网格记录和我输入的内容。我怎么解决这个问题?感谢。

2 个答案:

答案 0 :(得分:0)

我想建议使用Angular Ui.router

您将能够更改路线状态,更多信息请查看文档

答案 1 :(得分:0)

要在远离控制器然后再返回时保留数据,建议的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;
}

此外,您可以查看角度本地存储以保留数据:https://github.com/grevory/angular-local-storage