2014-05-16 44 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; 
    }]) 
}()); 

我永遠無法獲得$位置的工作。

相關問題