【发布时间】:2015-02-05 15:40:00
【问题描述】:
这是我迄今为止对 ui-router 状态的了解:
$stateProvider
.state('tools', {
url: '/tools/:tool',
template: '<div ui-view=""></div>',
abstract: true,
onEnter: function ($stateParams, $state, TOOL_TYPES) {
if (TOOL_TYPES.indexOf($stateParams.tool) === -1) {
$state.go('error');
}
}
})
.state('tools.list', {
url: '',
templateUrl: 'app/tools/tools.tpl.html',
controller: 'ToolsController'
})
.state('tools.view', {
url: '/:id/view',
templateUrl: 'app/tools/partials/tool.tpl.html',
controller: 'ToolController'
});
你可以看到父状态有参数tool,它只能在TOOL_TYPES数组中。所以如果tool不可用,我想重定向到错误页面。
实际上,一切都按预期工作,但我收到两个错误:
TypeError: Cannot read property '@' of null
TypeError: Cannot read property '@tools' of null
所以我想,无论如何,子状态已经被“击中”了。有可能防止这种情况吗?或者也许还有其他方法可以实现我想要的?
【问题讨论】:
-
我认为这可能是 ui-router 的一个已知问题。检查这个:github.com/angular-ui/ui-router/issues/1434 和这个:github.com/angular-ui/ui-router/issues/1234。
标签: javascript angularjs angular-ui-router