$ location服务未将URL参数传递给Controller

时间:2017-02-07 14:21:35

标签: angularjs

我正在尝试通过网址参数将 ID 传递给名为“ more.html ”的网页。所以URL参数将如下所示。

http://example.com/more.html?id=200

我在more.html页面的控制器中使用了 $ location 服务,以从URL获取参数ID。这是我使用的控制器代码。

var app = angular.module('myApp', []);
app.controller('customersCtrl', function($location, $scope, $http) {
    var sno = $location.search().id;
    alert(sno);
});

我从上面的代码得到的结果是“未定义”。

3 个答案:

答案 0 :(得分:1)

就像@ daan.desmedt所说的那样。我将URL结构更改为以下内容并通过它传递ID。

从:

http://example.com/more.html?id=200

为:

http://example.com/more.html#?id=200

我在more.html之后添加了。它解决了这个问题。

答案 1 :(得分:0)

您没有定义您注入的参数。它应该如下所示:

var app = angular.module('myApp', []);
app.controller('customersCtrl', ['$location' , '$scope' , '$http' , function($location, $scope, $http) {
    var sno = $location.search().id;
    alert(sno);
}]);

答案 2 :(得分:0)

按以下方式更改url structure(添加#

从:

http://example.com/more.html?id=200

为:

http://example.com/more.html#?id=200

在您的网址参数之前添加# more.html将解决问题。 也许对于您的下一个项目,您可以使用ui-router,这是一种使用parameters的更有条理的方式。

https://github.com/angular-ui/ui-router