如果我使用Angular ui路由器撥打$state.go('login')
,郊區看起來像這樣。有沒有一種方法使用角度ui路由器不顯示#!/ login?
有沒有一種方法來隱藏#!/login
?這是第一次使用角度ui路由器,我甚至不知道這是可能的。 所以我想看到的只有localhost:3000/
如果我使用Angular ui路由器撥打$state.go('login')
,郊區看起來像這樣。有沒有一種方法使用角度ui路由器不顯示#!/ login?
有沒有一種方法來隱藏#!/login
?這是第一次使用角度ui路由器,我甚至不知道這是可能的。 所以我想看到的只有localhost:3000/
您可以在ui-router
中創建一個沒有url的狀態,在配置狀態時不需要定義url屬性。
像這樣:
angular.module('app').config(function ($stateProvider) {
$stateProvider.state('login', {
component: 'loginComponent'
});
});
您將無法直接導航到登錄URL。但是您仍然可以使用ui-sref
或$state.go('login')
進行導航。
如果您仍然希望能夠直接導航到登錄頁面,您可以在除上述外,在那裏你指定的URL屬性來配置其他登錄狀態。
angular.module('app').config(function ($stateProvider) {
$stateProvider.state('login', {
component: 'loginComponent'
}).state('loginDirect', {
url: '/login',
component: 'loginComponent'
});
});
試試這個在您的配置文件:
$locationProvider.hashPrefix('');
對於例如
angular.module('myPageApp', ['ui.router'])
.config(function ($stateProvider, $locationProvider) {
$stateProvider
.state('app',{
url: '/app',
templateUrl: 'someView.html',
controller: 'appController'
})
...
$locationProvider.hashPrefix('');
});
感謝您的回答,但是你的建議將'#!/ login'轉換爲'#/ login'只會在url中刪除'!'。 –
在上面的代碼中,可以省略#和!但不能跳過URL中的路由狀態。您可以將URL作爲localhost:3000/login或者您可以將路由設置爲'/'標識符。
如果您的應用程序不使用HTML5模式,或者在不支持HTML5模式的瀏覽器上運行,並且您沒有指定自己的哈希前綴,則客戶端URL現在將包含!字首。
要使您的HTML5模式開啓,請嘗試以下代碼。
app.config(['$locationProvider', function($locationProvider) {
$locationProvider.hashPrefix(''); // by default '!'
$locationProvider.html5Mode(true);
}]);
此外,在HTML的頁眉部分,添加此基礎如下REF類型:
<head>
...
<base href="/">
</head>
欲瞭解更多信息,請點擊這裏指這段代碼的應用程序:https://github.com/TheAjinkya/Angular-UI-Router
希望它有幫助!
將您的「登錄」狀態設置爲使用「/」URL?即''url:''' – Phil
搜索/閱讀更多關於'角度html5模式' – harishr
@harishr我不認爲這適用於這裏 – Phil