Angular的$ location。$ hash不能始终如一地工作

时间:2014-09-26 16:44:49

标签: angularjs

我正在尝试使用Angular的$ location服务,如下所示:

function onMenuAction(rept, hier) {                     
  $location.url('index.html#/reportmaint?reptname=' + rept + "&hierarchy=" + hier); 
}

但它不会重定向到我的reportmaint.html视图。

相反,它直接进入我的dashboard.html,这是路线中的索引页。

由于上述$ location.url调用,地址栏中的网址为:

   http://localhost:49479/index.html#/#%2Freportmaint%3Freptname=CTPYHIER&hierarchy=true

但它根本没有改为reportmaint.html路线。

但是,如果我手动输入此URL,则会按预期将Angular重定向到reportmaint.html:

http://localhost:49479/index.html#/reportmaint?reptName=TEST

我的sidebar.js就像这样开始注入$ location服务:

 (function () { 
'use strict';

var controllerId = 'sidebar';
angular.module('app').controller(controllerId,
    ['$scope', '$route', '$location', '$window', 'config', 'routes', 'datacontext', 'userService', sidebar]);

function sidebar($scope, $route, $location, $window, config, routes, datacontext, userService) {
    var vm = this;

 // ... additional code ommitted

   function onMenuAction(rept, hier) {                  
     $location.url('index.html#/reportmaint?reptname=' + rept + "&hierarchy=" + hier);
    }
};
})();

我错过了理解$ location服务的关键。哈希模式与html5模式?这会以某种方式影响我想要完成的事情吗?

先谢谢你。

鲍勃

1 个答案:

答案 0 :(得分:1)

您必须删除网址中的index.html#才能使其正常运行:

$location.url('/reportmaint?reptname=' + rept + "&hierarchy=" + hier); 

另一种方法是使用 $location.path() $location.search() 来更改网址:

$location.path('/reportmaint').search({reptname: rept, hierarchy: hier});