这是我的配置:
.state('index.oz', {
abstract: true,
url: '/oz',
views: {
'mainView@': {
templateUrl: "Views/oz/oz.html",
controller: 'ozController'
}
}
})
.state('index.iz.a', {
url: '/a/:id',
params: {
id: {
value: null,
squash:true
}
},
views: {
'ozTypeView': {
templateUrl: "Views/oz/a.html",
controller: "ozaController"
}
}
})
.state('index.oz.b', {
url: '/b/:id',
params: {
id: {
value: null,
squash:true
}
},
views: {
'ozTypeView': {
templateUrl: "Views/oz/ozb.html",
controller: 'ozbController'
}
}
});
我想要的网址是:
/盎司/ A
/盎司/ B
/盎司/ A / 45
/盎司/ B / 12
如何在每个子状态中创建url,以便我不必在每个州写下以下代码:
params: {
id: {
value: null,
squash:true
}
}
更加快速,我可以以某种方式将那段代码放在父抽象状态中,或者甚至可以在父状态中定义参数id,但是如上所述保留我想要的URL?基本上,我会有几个子状态,我不希望每个州重复相同的params代码。
答案 0 :(得分:0)
我猜你直接猜对了,但你可以减少这样的代码重复:
function stateWithId(name, cfg) {
cfg.url += '/:id';
if (!cfg.params) {
cfg.params = {};
}
cfg.params.id = {
value: null,
squash:true
};
$stateProvider.state(name, cfg);
}
stateWithId('index.iz.a', {
url: '/a',
views: {
'ozTypeView': {
templateUrl: "Views/oz/a.html",
controller: "ozaController"
}
}
});
stateWithId('index.iz.b', {
url: '/b'
});