我一直在看这些页面(1,2,3)。我基本上想更改自己的$state,但是我不想重新加载页面。
$state
我目前在页面上/schedules/2/4/2014,当我单击按钮并使URL变为时,我想进入编辑模式/schedules/2/4/2014/edit。
/schedules/2/4/2014
/schedules/2/4/2014/edit
我的edit状态很简单$scope.isEdit =true,所以没有必要重新加载整个页面。但是,我确实希望$stateand和or url进行更改,以便如果用户刷新页面,则页面将以编辑模式启动。
edit
$scope.isEdit =true
url
我能做什么?
对于此问题,您可以仅创建既不具有templateUrl也不具有的子状态controller,并在states正常情况下向前移动:
templateUrl
controller
states
// UPDATED $stateProvider .state('schedules', { url: "/schedules/:day/:month/:year", templateUrl: 'schedules.html', abstract: true, // make this abstract controller: function($scope, $state, $stateParams) { $scope.schedDate = moment($stateParams.year + '-' + $stateParams.month + '-' + $stateParams.day); $scope.isEdit = false; $scope.gotoEdit = function() { $scope.isEdit = true; $state.go('schedules.edit'); }; $scope.gotoView = function() { $scope.isEdit = false; $state.go('schedules.view'); }; }, resolve: {...} }) .state('schedules.view', { // added view mode url: "/view" }) .state('schedules.edit', { // both children share controller above url: "/edit" });
这里的一个重要概念是在中ui- router,当应用程序处于特定状态时(状态为“活动”时),其所有祖先状态也都隐式处于活动状态。
ui- router
所以在这种情况下
schedules
resolve