使用Angular获取来自其他站点的URL参数?

时间:2014-05-16 22:14:21

标签: angularjs

我一直在阅读有关此主题的先前问题,似乎没有什么对我有用。

我的页面是从外部应用程序调用的,它传递的内容如下:

http://MySite/index.html?CompanyId=4000&ActionType=Reservation

我需要从中读取CompanyId和ActionType。

无法使用路由参数,因为在任何路由信息添加到网址之前参数都是

我已经尝试了这两个......并且y返回true?

    var x = $location.search('CompanyId');
    var y = $location.search().CompanyId;

我的模块配置定义如下:

// Defining a new module
var module = angular.module("aaa", ["ui.bootstrap","ngRoute"]);

module.config(['$routeProvider', '$locationProvider',
    function ($routeProvider, $locationProvider) {
    $routeProvider
        .when("/displaySizes", {
            templateUrl: "views/displaySizes.html",
            controller: "displaySizesController"
        })
        .when("/collectCustomerInfo", {
            templateUrl: "views/collectCustomerInfo.html",
            controller: "collectCustomerInfoCtrl"
        })

        .otherwise({
            redirectTo: "/displaySizes"
        })
    $locationProvider.html5Mode(true);
}]);

有人发现我做错了吗?

澄清......我所拥有的是:

    http://example.com?companyId=7/#/some/path?foo=bar&baz=xoxo

所以我试图读取的参数是在#path之前。似乎$ location.search只搜索#之后的路径部分?有没有办法获取companyId参数(没有编写所有的解析代码)?

2 个答案:

答案 0 :(得分:1)

$ location.search()在已解析的JSON对象中返回查询参数 - 因此它只返回'?'之后的值。在网址中。

以下是获取companyId参数的一种解决方案。它不使用Angular并且使用"解析代码",但它看起来很简单。

var url = window.location.href;
var parts = url.split("/");
var firstUrlTerm = parts[0];
var firstTermParts = firstUrlTerm.split("=");
var firstTermValue = firstTermValue[1];

答案 1 :(得分:0)

我最终创建了一个解析URL的Angular服务。

// IIFE (Immediately Invoked Function Expression)
(function () {
angular.module("aaa.services", [])
.factory('aaaInformationService', ["$rootScope",
    function($rootScope,$location) {
        var siteInformation = {};

        // Properties
        siteInformation.companyId=getUrlVars()["CompanyId"];
        siteInformation.connectionType = getUrlVars()["ConnectionType"];

        // Support functions
        function getUrlVars() {
            var vars = {};
            var parts = window.location.href.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (m, key, value) {
                vars[key] = value;
            });
            return vars;
        }
        return siteInformation;
    }])
}());

我无法让$ location工作。