我正在尝试使用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模式?这会以某种方式影响我想要完成的事情吗?
先谢谢你。
鲍勃
答案 0 :(得分:1)
您必须删除网址中的index.html#
才能使其正常运行:
$location.url('/reportmaint?reptname=' + rept + "&hierarchy=" + hier);
另一种方法是使用 $location.path()
和 $location.search()
来更改网址:
$location.path('/reportmaint').search({reptname: rept, hierarchy: hier});