2014-10-30 175 views
4

这是我第一次尝试在AngularJS中使用$ location服务来检查查询字符串参数。我一直在阅读文档并试图在Plunkr中使用它来了解如何使用它,但到目前为止,我未能从查询字符串中检索任何参数。

我一直在使用测试它这个花掉http://plnkr.co/edit/RIFdWa5ay2gmRa6Zw4gm?p=info

var app = angular.module('myApp', []) 
    .config(function($locationProvider) { 
    $locationProvider.html5Mode(true); 
    }); 

angular.module('myApp').controller('myCtrl', function($scope, $location){ 
    $scope.name = "Andrei"; 
    $scope.url = $location.host(); 
    $scope.path = $location.path(); 
    $scope._params = $location.search(); 
    }); 

我读过设置在$ locationProvider html5Mode(真),以获得$位置服务的“预期的工作是必需的“ - 我已经完成了,但是当设置这个时候,在我的普通模式中没有任何工作了(你可以将它设置为false,并且你会看到绑定再次正确)。

我错过了有关$ location服务的内容吗?

任何帮助或建议表示赞赏!

谢谢!

+1

你Plunker不工作..对角1.3,你需要在你的HTML中加入碱标签..和之后,你的plunker是没有查询参数的iframe中(正如你所看到的路径不同于当前的URL路径) 我正在使用$ location.search()来获取url参数,它可以工作。 – 2014-10-30 13:42:10

回答

2

在AngualarJS 1.3中$location在HTML5模式下需要存在<base>标签,以便它知道所有链接相对于的路径。您可以添加<base href="/" />以使其再次运行。

http://plnkr.co/edit/j9rd1PajNLQVJ8r4c8BZ?p=preview

+0

感谢您的评论!我错过了AngularJS文档的基础部分。事实上,一旦添加到index.html的代码再次运行,但我仍然没有看到使用search()getter的查询字符串。不应该在上面的场景(url)搜索()getter return {“p”:“info”}? – AndreiC 2014-10-30 13:52:09

+1

代码运行的iframe的URL实际上是“http://run.plnkr.co/b5QdYqBeapjRDHkk/”,没有查询字符串。 '编辑'网址是为page/plnkr应用程序。 – TheSharpieOne 2014-10-30 13:55:31

+0

在我的机器上做了一个独立的测试,并按照我想要的那样开始工作。感谢你的帮助。 – AndreiC 2014-10-30 14:21:03