2016-01-27 39 views
0

例如,如果我尝试访问本地主机:8080,我的AngularJS应用程序正在运行,我正在重定向到http://localhost:8080/#/home,我在网址中间出现了一个奇怪的#。我不明白这个#来自哪里,但我怀疑它与我在$ stateProvider中定义的URL有关。

这里是$ stateProvider代码:

//STATE HANDLER 
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 
app.config([ 
'$stateProvider', 
'$urlRouterProvider', 
function($stateProvider, $urlRouterProvider) { 

    $stateProvider 
     .state('newAlarm', { 
      url: '/newAlarm', 
      views: { 
       '': {templateUrl: '/templates/newAlarmPage.html'}, 
       '[email protected]':{templateUrl: '/templates/header.html'}, 
       '[email protected]':{templateUrl: '/templates/newAlarmForm.html'} 
      }, 
      controller: 'NewScheduleCtrl' 
     }) 

     //to be changed 
     .state('home', { 
      url: '/home', 
      views: { 
       '': {templateUrl: '/templates/homePage.html'}, 
       '[email protected]':{templateUrl: '/templates/header.html'} 
      }, 
      controller: '' 
     }); 
    //end of to be changed 
    $urlRouterProvider.otherwise('home'); 
}]); 

有什么想法?

+2

看看http://stackoverflow.com/questions/7729580/how-can-i-use-urls-in-a -single-page-application然后http://stackoverflow.com/questions/14771091/removing-the-hashtag-from-angularjs-urls-symbol关于如何删除它 – br3w5

回答

2

从维基百科的文章上single page applications

的页面不在过程中的任何一点重装,也没有控制转移到另一个页面,虽然位置散列可以用来提供 感知和应用程序中独立逻辑页面的可导航性

使用散列可使角度(和其他SPA框架)在不重新加载页面的情况下路由URL。

相关问题:

+0

所以我读过AngularJS可以用来不仅仅是单页面应用程序。在我发布的代码中,我使用一个AngularJS应用程序来定义两个完全分离的页面/路径。这是一个很好的做法吗? –

+0

如果他们都是同一个网站/应用程序的一部分,那么很好......单个页面应用程序应该由用户体验需求驱动。因此,如果它对用户有效,那么它很好,我可以看到它适用于应用程序顶层的页面,该页面提供硬链接(全页面刷新),其子页面的行为与单页面应用程序类似。 – br3w5

0

,如果你愿意,你可以禁用哈希值。

app.config(['$stateProvider','$urlRouterProvider','$locationProvider', 
    function($stateProvider, $urlRouterProvider,$locationProvider) { 

    //ROUTING 

    $locationProvider.html5Mode(true); 

}]); 

然后加入索引中的HTML文件:

<!doctype html> 
<html> 
    <head> 

    //... 

    <base href="/"> 

    </head> 
    //... 
</html>