Angular UI路由器:如何保存父状态?
Angular UI Router: How to save parent state?
我使用 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'
})
;
我尝试从 'main' 进入 'settings' 状态 - 一切正常:$state.go('settings').
当我尝试单击“<返回”和 return 时,主状态重置为初始状态。
我发现 here 'settings' 必须是 'main' 的子项的提示。但我不知道如何实施。我所有的尝试都失败了。
问题:如何切换到另一个视图,保存上一个视图的状态?
谢谢。
ui-router nothing 关于保存应用程序状态。这里的解决方案是使用一个服务来持久化你的应用程序 state/data(在 AngularJS 的实现中,服务是一个单例)。
所以基本上是这样的:
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
都会指向服务内部的同一个对象引用(它是一个 单例)。
因此,无论您在哪个控制器中使用它或执行了多少状态更改,您对 $scope.data
所做的任何更改都将是 "saved"。
此外,请记住,如果您在多个控制器中使用它并以与它为 $scope.data
分配了一个新的引用。你应该永远不要覆盖它,除非你知道你在做什么。
我使用 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'
})
;
我尝试从 'main' 进入 'settings' 状态 - 一切正常:$state.go('settings').
当我尝试单击“<返回”和 return 时,主状态重置为初始状态。
我发现 here 'settings' 必须是 'main' 的子项的提示。但我不知道如何实施。我所有的尝试都失败了。
问题:如何切换到另一个视图,保存上一个视图的状态?
谢谢。
ui-router nothing 关于保存应用程序状态。这里的解决方案是使用一个服务来持久化你的应用程序 state/data(在 AngularJS 的实现中,服务是一个单例)。
所以基本上是这样的:
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
都会指向服务内部的同一个对象引用(它是一个 单例)。
因此,无论您在哪个控制器中使用它或执行了多少状态更改,您对 $scope.data
所做的任何更改都将是 "saved"。
此外,请记住,如果您在多个控制器中使用它并以与它为 $scope.data
分配了一个新的引用。你应该永远不要覆盖它,除非你知道你在做什么。