gpt4 book ai didi

angularjs - Angular UI-Router 将根 url 发送到 404

转载 作者:行者123 更新时间:2023-12-04 06:02:57 25 4
gpt4 key购买 nike

我有一个关于 ui-router 的令人恼火的问题.一切都如我所愿,所有错误的 URL 都被发送到 404状态。但是,即使我的默认状态在 url 为 /#/ 时正确呈现, /的网址重定向到 /404/ .我如何为 default 提供服务两个状态 //#/ ?

app.js

MyApp.config( function ($stateProvider, $urlRouterProvider) {

// For any unmatched url, send to 404
$urlRouterProvider.otherwise("/404/");

$stateProvider
// Home (default)
.state('default', {
url: '/',
resolve: {
...
},
}
});

最佳答案

我认为这将满足您的需求-

MyApp.config(function($stateProvider, $urlRouterProvider) {
// the known route
$urlRouterProvider.when('', '/');

// For any unmatched url, send to 404
$urlRouterProvider.otherwise('/404');

$stateProvider
// Home (default)
.state('default', {
url: '/',
resolve: {
// ...
}
// ....
});
});

我引用了 this post .您可能需要使用正则表达式来处理包含数据的路由。

而不是 #在您的 URL 中,您也可以使用查询字符串并通过 $stateParams 获取它在一种状态。

这是你如何做到的 -
  // ....

$stateProvider

.state('default', {
url: '/?data',
templateUrl: 'templates/index.html',
controller: 'defaultCtrl'
})

然后你可以使用下面的这个来带数据回家 -
var toStateData = {
key1: 'value1',
key2: 'value2'
}

$state.go('default', {data: JSON.stringify(toStateData)});

您不必将 $stateParams 中的数据字符串化但这将允许带有一个参数的更多选项。在 defaultCtrl Controller ,您可以像这样获取传递的查询字符串 -
var stateData = JSON.parse($stateParams.data);
var key1 = stateData.key1;
// ....

关于angularjs - Angular UI-Router 将根 url 发送到 404,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23438664/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com