2014-05-16 43 views
0

我一直在阅读关于这个主题的先前的问题,似乎没有任何工作适合我。使用Angular从另一个网站获取URL参数?

我的页面是从正在通过像这样的外部应用程序调用:

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

我需要从这个阅读CompanyId和操作类型。

无法因为参数任何路由信息被添加到URL之前使用路由参数。

我已经尝试了这两个...和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 

所以我想读的参数是#路径之前。看起来$ location.search只搜索#之后的路径部分?有没有办法获取companyId参数(无需编写所有解析代码)?

+0

你是什么意思?“我不能使用路由参数,因为参数是在路由信息添加到URL之前。” - 这些参数看起来像是URL的路由信息​​。另外,请记住,您始终可以在角度之前挂钩(例如,在您包含角度库并自行访问document.location之前的''部分中。 –

回答

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]; 
+0

我的错误...我在示例字符串中存在拼写错误。看到更新的例子。 – DeborahK

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; 
    }]) 
}()); 

我永远无法获得$位置的工作。

相关问题