我目前遇到ui-router
的导航问题。请参阅下面的代码,以便我充分描述该问题:
// routeMap.js
...
.state('instance', {
url: '/{instanceId}',
templateUrl: '/Public/tmpl/index.html',
controller: controllers.InstanceController
})
.state('instance.case', {
url: '/case',
templateUrl: '/Public/tmpl/views/case/case.html',
controller: controllers.CaseController,
data: {
param1: 'p1'
},
onEnter: transitionEvents.enter,
onExit: transitionEvents.exit
})
.state('instance.case.incident', {
url: '/incident',
templateUrl: '/Public/tmpl/views/case/partials/incident.html',
controller: controllers.CaseIncidentController
})
...
$urlRouterProvider
.when('', '/')
.otherwise('/error/404');
// instance.js
function instanceController($scope, $rootScope, $state, $stateParams, $location, DTO) {
$scope.instanceId = $stateParams.instanceId;
$rootScope.$emit('instanceId', { instanceId: $scope.instanceId });
console.log('@state | #instance', $stateParams, $scope, $state);
$state.go('instance.case', $stateParams);
}
// case.js
function caseController($scope, $state, $stateParams, $location, DTO) {
//var persisted = DTO.serialize(true)
// , options = angular.extend(options, persisted);
// Inherit from CaseDataModel to $scope
CaseDataModel.call($scope, options);
DTO.observe($scope);
console.log('@state | #hotline', $stateParams);
$scope.networkUserId = 'SomeUserId';
$scope.callDate = moment();
setTimeout(function(){
$scope.networkUserId = 'Brad Pitt';
$scope.$apply();
}, (1000 * 5));
$state.go('instance.case.incident', $stateParams);
}
(incidentController
对路由没有任何作用)
我想仅使用'instance'
状态来管理基于案例ID(instanceId
)的全局状态 - 从instance
过渡到instance.case
,以及过渡从那里(一旦调用案件控制器)到一个子状态(instance.case.incident
) - 并且 - 能够从/new/case/incident
导航到/998/case/incident
,并且根据{{1}}保留所有正确的状态。
从instanceId
导航到/new/case/incident
(反之亦然)时,/998/case/incident
状态加载并转换为'instance'
- 传递正确的'case'
参数 - (到目前为止,这么好......),instanceId
状态转换为'case'
状态 - 继续传递正确'incident'
参数的链 - (是的。 ..是...),instanceId
状态加载(bravo!... Magnifico!...) - 然后,此过程再次出现,但是,传递 new 的旧'incident'
参数 - 运行每个控制器,instanceId
/ onEnter
等...(hogwash)。
从onExit
导航到/new/case/incident
(反之亦然) - 没有/998/case
子路径 - 'incident'
状态转换为'instance'
}状态和'case'
状态转换为'case'
状态而不会将旧/错误的参数传回的进程递归 - 这 是可取的。
我绝对搜索(全局)'incident'
并且确实只有一个(ng-controller
)函数在HTML中被引用。
Prethanks。
答案 0 :(得分:0)