Javascript Angularjs-如何从URL获取参数

Javascript Angularjs-如何从URL获取参数,javascript,angularjs,url,parameters,Javascript,Angularjs,Url,Parameters,我有这样一个URL: http://myproject.com/apartments?location=123&arrival=01&departure=456&rooms=789 我如何获取位置、到达、离开、房间的值并将其传递给我的服务 我尝试使用$location.search(),但无法获取值。结果是: 对象{位置=未定义,到达=未定义,离开=未定义,更多…} 我的服务: angular.module('apartmentService', []) .factory('Apart

我有这样一个URL:
http://myproject.com/apartments?location=123&arrival=01&departure=456&rooms=789

我如何获取
位置、到达、离开、房间的值并将其传递给我的服务

我尝试使用
$location.search()
,但无法获取值。结果是:
对象{位置=未定义,到达=未定义,离开=未定义,更多…}

我的服务:

angular.module('apartmentService', [])

    .factory('Apartment', function ($http) {
        return {
            get: function (parameters) {

                console.log(parameters);

                return $http({
                    method: 'GET',
                    url: '/api/apartments',
                    params: {location: parameters}
                });
            }
        };
    });
我的控制器:

angular.module('apartmentCtrl', [])

    .controller('ApartmentController', function ($scope, $http, $location, Apartment) {
        $scope.loading = true;

        $scope.parameters = {
            location: $location.search().location,
            arrival: $location.search().arrival,
            departure: $location.search().departure,
            rooms: $location.search().rooms
        };

        Apartment.get($scope.parameters).success(function (data) {
            $scope.apartments = data;
            $scope.loading = false;
        });
    });
$location.search('queryparamname')

控制器内部 将服务注入$location

参见参考资料

$location

// given url http://example.com/#/some/path?foo=bar&baz=xoxo
var searchObject = $location.search();
// => {foo: 'bar', baz: 'xoxo'}

// set foo to 'yipee'
$location.search('foo', 'yipee');
// $location.search() => {foo: 'yipee', baz: 'xoxo'}
$location.search('queryparamname')

控制器内部 将服务注入$location

参见参考资料

$location

// given url http://example.com/#/some/path?foo=bar&baz=xoxo
var searchObject = $location.search();
// => {foo: 'bar', baz: 'xoxo'}

// set foo to 'yipee'
$location.search('foo', 'yipee');
// $location.search() => {foo: 'yipee', baz: 'xoxo'}

您映射错误,要检索查询字符串,请执行以下操作:

$location.search('arrival')
$location.search('location') 
// etc etc
但你真的不需要绘制它们的地图$location.search()返回所有参数的对象(键/值)

$scope.parameters = $location.search();

// would return an object { location : '123', arrival : '555' /* etc etc */ }

您映射错误,要检索查询字符串,请执行以下操作:

$location.search('arrival')
$location.search('location') 
// etc etc
但你真的不需要绘制它们的地图$location.search()返回所有参数的对象(键/值)

$scope.parameters = $location.search();

// would return an object { location : '123', arrival : '555' /* etc etc */ }

使用用户界面路由器。你会喜欢它的,这是正确的方法!相信我


这个链接中有一个很好的例子-

使用ui路由器。你会喜欢它的,这是正确的方法!相信我


这个链接中有一个很好的例子-

我猜这是因为angular希望url散列后的数据

这意味着,如果url看起来像:
http://myproject.com/#apartments?location=123&arrival=01&departure=456&rooms=789

你可以尝试的一件事是让应用程序知道它的基础。在html头标记中添加以下行

<base href="/">

我猜这是因为angular希望url散列后的数据

这意味着,如果url看起来像:
http://myproject.com/#apartments?location=123&arrival=01&departure=456&rooms=789

你可以尝试的一件事是让应用程序知道它的基础。在html头标记中添加以下行

<base href="/">

丑陋不安全的两层衬里:

paramsObject = {};
window.location.search.replace(/\?/,'').split('&').map(function(o){ paramsObject[o.split('=')[0]]= o.split('=')[1]});
paramsObject将是:

Object {location: "123", arrival: "01", departure: "456", rooms: "789"} 
您可以将其直接注入$scope.parameters

$scope.parameters = $location.search();

// would return an object { location : '123', arrival : '555' /* etc etc */ }

丑陋不安全的两层衬里:

paramsObject = {};
window.location.search.replace(/\?/,'').split('&').map(function(o){ paramsObject[o.split('=')[0]]= o.split('=')[1]});
paramsObject将是:

Object {location: "123", arrival: "01", departure: "456", rooms: "789"} 
您可以将其直接注入$scope.parameters

$scope.parameters = $location.search();

// would return an object { location : '123', arrival : '555' /* etc etc */ }


您的URL是一个字符串。所以,使用
string.split()
string.indexOf()
应该足够了,不是吗?我是新手。你能给我演示一下吗?非常感谢你!!!网上有很多示例:什么是angularjs版本?我不明白,你用angularjs做了演示吗?你的URL是一个字符串。所以,使用
string.split()
string.indexOf()
应该足够了,不是吗?我是新手。你能给我演示一下吗?非常感谢你!!!网上有很多示例:angularjs的角度版本是什么?我不明白,你用angularjs演示了什么?使用like key value查看文档//给定url var searchObject=$location.search();//=>{foo:'bar',baz:'xoxo'}//将foo设置为'yipee'$location.search('foo','yipee');//$location.search()=>{foo:'yipee',baz:'xoxo'}返回空对象:(使用like键值查看文档//给定url var search object=$location.search();//=>{foo:'bar',baz:'xoxo'}//将foo设置为'yipee'$location.search('foo','yipee');//$location.search()=>{foo:'yipee',baz:'xoxo'}返回空对象:(谢谢。但是当我编辑到:
$scope.parameters=$location.search()时)
。返回空对象。您的URL末尾确实有东西吗?
which.html?location=123&arrival=555
它仅在查询字符串中没有任何内容时返回空对象,如果我的URL类似:
http://sleepy.dev:8000/apartments?location=123&arrival=01&departure=456&rooms=789
。它返回空对象。但是当我将
#
添加到我的url时:
http://sleepy.dev:8000/apartments#?location=123&arrival=01&departure=456&rooms=789
。这没问题。但是当我通过GET方法提交表单时,
不存在。我不确定你的意思,但是为了让它看到参数,#和?都是必需的!谢谢。但是当我编辑到:
$scope.parameters=$location.search()时
。返回空对象。您的URL末尾确实有东西吗?
which.html?location=123&arrival=555
它仅在查询字符串中没有任何内容时返回空对象,如果我的URL类似:
http://sleepy.dev:8000/apartments?location=123&arrival=01&departure=456&rooms=789
。它返回空对象。但是当我将
#
添加到我的url时:
http://sleepy.dev:8000/apartments#?location=123&arrival=01&departure=456&rooms=789
。没问题。但是当我通过GET方法提交表单时,
并没有退出。我不确定你的意思,但是为了让它看到参数,#和?都是必需的都是它工作所必需的约书亚,#和?都是它工作所必需的