我有父母和子女。 父状态用于查看/编辑客户,子状态是创建的。 如果父状态没有参数,它们都可以正常加载:
.state('crm.customer', {
url: 'crm/customers/',
templateUrl: 'src/modules/crm/views/customer.html',
controller: 'customersController'
})
.state('crm.customer.create', {
url: 'crm/customers/create',
templateUrl: 'src/modules/crm/views/customer.html',
controller: 'customersController'
})
当我将customerId
参数添加到父状态,并且我加载子状态时,首先加载子状态,然后立即切换到父状态:
.state('crm.customer', {
url: 'crm/customers/:customerId',
templateUrl: 'src/modules/crm/views/customer.html',
controller: 'customersController'
})
.state('crm.customer.create', {
url: 'crm/customers/create',
templateUrl: 'src/modules/crm/views/customer.html',
controller: 'customersController'
})
如何在子状态加载后阻止加载父状态?
答案 0 :(得分:1)
这是因为当您访问/crm/customers/create
时,两个州的网址都匹配。为了解决这个问题,请定义param的类型。根据{{3}},有几种方法可以在url中定义params,其中一种方法是使用花括号:'/user/{id:int}'
。
在您的情况下,请使用
.state('crm.customer', {
url: 'crm/customers/{customerId:int}',
templateUrl: 'src/modules/crm/views/customer.html',
controller: 'customersController'
})
以便/crm/customers/create
只匹配孩子的状态。