我开发了一个
html5应用程序
我有一个看法,用户的评论正在加载.而且它是递归的 – 任何注释都有子部分,它们加载在同一个视图中并使用相同的控制器.
我有一个看法,用户的评论正在加载.而且它是递归的 – 任何注释都有子部分,它们加载在同一个视图中并使用相同的控制器.
一切都好.但是,当我想回去时,再次加载评论,我失去了我的立场,应该再次滚动.
所以,我的问题是.当我回去时可以保存视图的状态.我以为使用一些技巧,就像随时点击子选项并隐藏以前的视图一样添加新视图.但我不知道该怎么做.
请帮忙.
是的,而不是将UI的状态加载到控制器中,而应该保持状态.这意味着,如果你这样做:
原文链接:https://www.f2er.com/angularjs/140458.htmlapp.config(function($routeProvider){ $routeProvider.when('/',{ controller: 'MainCtrl' }).when('/another',{ controller: 'SideCtrl' }); }); app.controller('MainCtrl',function($scope){ $scope.formData = {}; $scope./* other scope stuff that deal with with your current page*/ $http.get(/* init some data */); });
您应该将初始化代码更改为您的服务,以及在此处的状态,这样可以在多个视图之间保持状态:
app.factory('State',function(){ $http.get(/* init once per app */); return { formData:{},}; }); app.config(function($routeProvider){ $routeProvider.when('/',function($scope,State){ $scope.formData = State.formData; $scope./* other scope stuff that deal with with your current page*/ }); app.controller('SideCtrl',State){ $scope.formData = State.formData; // same state from MainCtrl }); app.directive('myDirective',function(State){ return { controller: function(){ State.formData; // same state! } }; });
当你来回观看时,他们的状态将被保留,因为你的服务是一个单身,当你第一次将它注入你的控制器时被初始化.
还有一个新的ui.router,它有一个状态机,它是一个低级版本的$routeProvider,你可以使用$stateProvider精细的粒子持久状态,但它目前是实验性的(并将在角度1.3)