我使用IonicFramework,Angular UI路由器和嵌套视图。
我的路由示例:
// Method app.config()
$stateProvider
.state('main', {
url: '',
views: {
'@' : {
templateUrl: 'layout/main.html'
},
'topbar@main' : {
templateUrl: 'component/topbar/topbar.html'
},
'content@main' : {
templateUrl: 'component/pager/pager.html'
}
}
})
.state('settings', {
templateUrl: 'component/settings/settings.html'
})
;
我尝试从'主'变为'设置'状态 - 一切正常:$ state.go('settings')。
当我尝试点击'<返回'并返回,主状态重置为初始状态。
我发现提示here,“设置”必须是“主要”的子级。但我不知道如何实现它。我所有的尝试都失败了。
问题:如何切换到其他视图,保存上一个视图的状态?
感谢。
答案 0 :(得分:0)
基本上就是这样:
angular.service('MyService', function() {
var data = {};
return {
get: function() {
return data;
}
};
});
function State1Controller($scope, MyService) { // you rely on AngularJS's built-in $injector
$scope.data = MyService.get();
}
现在每次使用此控制器时,$scope.data
都会指向服务中的相同对象引用(它是 singleton )。
因此,您对$scope.data
所做的任何更改都将被"保存"无论您使用何种控制器或执行多少状态更改。
另外,请记住,执行$scope.data = {};
会打破这个"技巧"如果您在以相同状态加载的多个控制器中使用它,则会为$scope.data
分配新引用。除非你知道自己在做什么,否则你应该从不覆盖它。