Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/371.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在ui路由器中从url地址删除哈希标记(#)_Javascript_Html_Angularjs_Angular Ui Router - Fatal编程技术网

Javascript 如何在ui路由器中从url地址删除哈希标记(#)

Javascript 如何在ui路由器中从url地址删除哈希标记(#),javascript,html,angularjs,angular-ui-router,Javascript,Html,Angularjs,Angular Ui Router,我的url看起来像这样 这是索引页。我正在使用angular ui router更改为各种视图,例如,但url带有#标记,如下所示: 问题: 有没有办法从url中删除/清除#标记。。如下图所示显示url路径: 我尝试了HTML5模式,但它在控制台中给出了角度误差 Error: [$location:nobase] http://errors.angularjs.org/1.5.0-rc.2/$location/nobase K/<@http://127.0.0.1:50884/js

我的url看起来像这样

这是索引页。我正在使用angular ui router更改为各种视图,例如,但url带有#标记,如下所示:

问题: 有没有办法从url中删除/清除#标记。。如下图所示显示url路径:

我尝试了HTML5模式,但它在控制台中给出了角度误差

Error: [$location:nobase] http://errors.angularjs.org/1.5.0-rc.2/$location/nobase
K/<@http://127.0.0.1:50884/js/angular-v1.5.min.js:6:421
pf/this.$get<@http://127.0.0.1:50884/js/angular-v1.5.min.js:110:96
h/<.invoke@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:293
gb/F<@http://127.0.0.1:50884/js/angular-v1.5.min.js:43:96
d@http://127.0.0.1:50884/js/angular-v1.5.min.js:40:270
e@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:1
h/<.invoke@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:86
gb/F<@http://127.0.0.1:50884/js/angular-v1.5.min.js:43:96
d@http://127.0.0.1:50884/js/angular-v1.5.min.js:40:270
e@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:1
h/<.invoke@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:86
gb/F<@http://127.0.0.1:50884/js/angular-v1.5.min.js:43:96
d@http://127.0.0.1:50884/js/angular-v1.5.min.js:40:270
e@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:1
h/<.invoke@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:86
s/</<@http://127.0.0.1:50884/js/angular-v1.5.min.js:52:121
n@http://127.0.0.1:50884/js/angular-v1.5.min.js:7:364
s/<@http://127.0.0.1:50884/js/angular-v1.5.min.js:52:90
h/<.invoke@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:293
e/<@http://127.0.0.1:50884/js/angular-v1.5.min.js:38:458
h/<.invoke@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:293
gb/F<@http://127.0.0.1:50884/js/angular-v1.5.min.js:43:96
d@http://127.0.0.1:50884/js/angular-v1.5.min.js:40:270
K@http://127.0.0.1:50884/js/angular-v1.5.min.js:71:447
la@http://127.0.0.1:50884/js/angular-v1.5.min.js:60:266
R@http://127.0.0.1:50884/js/angular-v1.5.min.js:58:229
R@http://127.0.0.1:50884/js/angular-v1.5.min.js:58:397
R@http://127.0.0.1:50884/js/angular-v1.5.min.js:58:397
N@http://127.0.0.1:50884/js/angular-v1.5.min.js:56:263
Ac/c/</<@http://127.0.0.1:50884/js/angular-v1.5.min.js:21:99
sf/this.$get</m.prototype.$eval@http://127.0.0.1:50884/js/angular-v1.5.min.js:140:363
sf/this.$get</m.prototype.$apply@http://127.0.0.1:50884/js/angular-v1.5.min.js:141:83
Ac/c/<@http://127.0.0.1:50884/js/angular-v1.5.min.js:21:57
h/<.invoke@http://127.0.0.1:50884/js/angular-v1.5.min.js:41:293
Ac/c@http://127.0.0.1:50884/js/angular-v1.5.min.js:20:1
Ac@http://127.0.0.1:50884/js/angular-v1.5.min.js:21:274
de@http://127.0.0.1:50884/js/angular-v1.5.min.js:20:83
@http://127.0.0.1:50884/js/angular-v1.5.min.js:306:372
n.Callbacks/i@http://127.0.0.1:50884/js/jquery-2.2.1.min.js:2:27060
n.Callbacks/j.fireWith@http://127.0.0.1:50884/js/jquery-2.2.1.min.js:2:27828
.ready@http://127.0.0.1:50884/js/jquery-2.2.1.min.js:2:29619
J@http://127.0.0.1:50884/js/jquery-2.2.1.min.js:2:29804
"
错误:[$location:nobase]http://errors.angularjs.org/1.5.0-rc.2/$location/nobase

K/为了使html5模式工作,您必须定义一个baseurl,如:

<base href="whatever/" />


请参阅w3schools以了解更多信息:

默认情况下,AngularJS将使用哈希标记路由URL。 使用AngularJS中的
$locationProvider
,很容易获得干净的URL并从URL中删除标签。 您需要将
$locationProvider
注入模块的配置部分,并像这样使用HTML5历史API。 e、 g


另外,不要忘记在index.html部分中放置一个
标记。

请参见:)使用:$locationProvider.html5Mode(true);现在我的url看起来像,但添加后,如果我按“刷新”,我会收到消息“无法获取/主页”,即使我再次返回,也会收到来自其他url的相同消息。现在你需要重写你的url。让我知道你使用的是哪种服务器端技术angularJSi在本地服务器上使用的是bracket.io。这是原始git上的git repo,它没有加载视图,请帮助这里的链接:使用这个$locationProvider.HTML5模式(true)需要在服务器端重写URL,基本上你必须重写所有指向应用程序入口点的链接(例如index.html)。无论在我们的例子中是
base\u URL()
app.config(function ($stateProvider, $urlRouterProvider, $locationProvider) {
    $stateProvider
        .state('home', {
            url: '/home',
            templateUrl: 'partial-home.html'
        })
        .state('about', {
            url: '/aboutus',
            templateUrl: 'aboutus.html'   
        });
    $locationProvider.html5Mode(true);
});