,所以我有兩條路線設置:UI路由器問題與stateParams和路由
$stateProvider.state('accounts', {
abstract: 'true',
url: "/accounts",
template: '<div ui-view></div>'
}).state('accounts.view', {
url: "/:accountNumber",
views: {
'@': {
templateUrl: 'tpl/account/index.html',
controller: 'AccountController',
controllerAs: 'controller'
}
},
resolve: {
today: ['today', function (today) {
// Return todays date
return today();
}],
tomorrow: ['tomorrow', function (tomorrow) {
// Return tomorrows date
return tomorrow();
}],
lastMonth: ['lastMonth', function (lastMonth) {
// Return lastMonths date
return lastMonth();
}],
account: ['$stateParams', 'AccountService', function ($stateParams, accountService) {
console.log('hi');
return accountService.get($stateParams.accountNumber);
}]
},
data: {
requireLogin: true,
pageTitle: 'Account details'
}
}).state('accounts.create', {
url: '/create',
views: {
'@': {
templateUrl: 'tpl/account/save.html',
controller: 'AccountSaveController',
controllerAs: 'controller'
}
},
resolve: {
account: function() {
return {};
}
},
data: {
requireLogin: true,
pageTitle: 'Create account'
}
}).state('accounts.view.edit', {
url: '/edit',
views: {
'@': {
templateUrl: 'tpl/account/save.html',
controller: 'AccountSaveController',
controllerAs: 'controller'
}
},
data: {
requireLogin: true,
pageTitle: 'Edit account'
}
})
如果我點擊飾ui-sref='accounts.create'
一個按鈕,它就會定位到正確的觀點,但它試圖做的決心accounts.view。看起來:accountNumber與/創建混淆。 如果我刷新了我的頁面,它不會加載視圖並仍嘗試解析該帳戶。
我試過很多方法來解決這個問題。 我想有這樣的URL:
賬戶/:使用accountNumber - 查看帳戶
賬戶/創建 - 創建一個帳戶,並
賬戶/:使用accountNumber /編輯 - 編輯帳戶
是否可以設置這樣的路線?
不確定您不能擁有**帳戶/:accountNumber **和** accounts/create **。正如在https://github.com/angular-ui/ui-router/wiki/URL-routing#user-content-url-parameters上引用***參數名稱可能只包含單詞字符(拉丁字母,數字和下劃線),並且在模式中必須是唯一的(跨路徑和搜索參數)*** – Korte
也許您可以將編輯路線更改爲'accounts/edit /:accountNumber'以避免混淆。 –