在AngularJS中保存视图的状态
发布时间:2020-12-17 09:41:29 所属栏目:安全 来源:网络整理
导读:我开发了一个 html5应用程序 我有一个看法,用户的评论正在加载.而且它是递归的 – 任何注释都有子部分,它们加载在同一个视图中并使用相同的控制器. 一切都好.但是,当我想回去时,再次加载评论,我失去了我的立场,应该再次滚动. 所以,我的问题是.当我回去时可以
我开发了一个
html5应用程序
我有一个看法,用户的评论正在加载.而且它是递归的 – 任何注释都有子部分,它们加载在同一个视图中并使用相同的控制器. 一切都好.但是,当我想回去时,再次加载评论,我失去了我的立场,应该再次滚动. 所以,我的问题是.当我回去时可以保存视图的状态.我以为使用一些技巧,就像随时点击子选项并隐藏以前的视图一样添加新视图.但我不知道该怎么做. 请帮忙.
是的,而不是将UI的状态加载到控制器中,而应该保持状态.这意味着,如果你这样做:
app.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) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |