source

Angularjs로 해시 후 URL 매개 변수를 구문 분석하려면 어떻게 해야 합니까?

manycodes 2023. 11. 7. 21:00
반응형

Angularjs로 해시 후 URL 매개 변수를 구문 분석하려면 어떻게 해야 합니까?

URL이 다음과 같은 Foursquare에서 access_token을 구문 분석하려고 합니다.

https://mywebsite.com/4sqredirect/ #access_token=1234567890XXXXX

$routeParams와 $location을 시도했지만 아무것도 돌려받지 못했습니다.$route를 시도한 후에야 다음 속성이 포함된 개체가 반환되었습니다.

current:  { 
    params:  {  } 
    pathParams:  {  } 
    loadedTemplateUrl: partials/4sqredirect
    locals:  {  } 
    scope:  { 
        this:  { 
            $ref: $["current"]["scope"]
        } 
        route:  { 
            $ref: $
        } 
        location:  {  } 
        token: null
    }
} 

네이티브 앵귤러를 사용해서는 구할 방법이 없다는 뜻인가요?JS 함수가 해시의 원인입니까?

업데이트:

내 컨트롤러는 다음과 같습니다.

angular.module('myApp')
    .controller('4sqredirectCtrl', function ($scope, $route, $location, $routeParams) {
        $scope.route = $route;
        $scope.location = $location;
        $scope.token = $routeParams.access_token;
    });

나의 주요 js는 다음과 같습니다.

angular.module('myApp', [
    'ngCookies',
    'ngResource',
    'ngSanitize',
    'ngRoute'
])
.config(function ($routeProvider, $locationProvider) {
    $locationProvider.html5Mode(true);

    $routeProvider
    .when('/', {
        templateUrl: 'partials/main',
        controller: 'MainCtrl'
    })
    .when('/4sqredirect/', {
        templateUrl: 'partials/4sqredirect',
        controller: '4sqredirectCtrl'
    })
    .otherwise({
        redirectTo: '/'
    });
});

각도 위치 서비스에서 $location.hash()메소드 리턴#after-hash

그래서 만약 당신의 url이 다음과 같다면.

https://mywebsite.com/4sqredirect/#access_token=1234567890XXXXX

그리고나서

$location.hash()돌아가다access_token=1234567890XXXXX

당신은 그것을 나누어야 합니다.split('=')[1]

클릭할 때 이 플렁커를 봅니다.4Square그리고나서$location.url()돌아가다

/4sqredirect/#access_token=123456
$location.hash().split('=')[1]

돌아가다123456

사용하다$location.search()

//e.g. url https://www.example.com/#!?name=123
var s = $location.search();
// {name: '123'}

http://docs.angularjs.org/api/ng.$location

검색:

매개 변수 없이 호출하면 현재 URL의 검색 부분(객체)을 반환합니다.

"원어민 각선미" 방법은 모르지만, 당신은 해시에 접근할 수 있습니다.location.hash현형으로이상적이지는 않겠지만, 가능합니다.

이를 위한 Angular JS의 직접적인 지원은 사실 없습니다.안 써요.ngRoute, 왜냐하면 그것은 이미 그것을 기대할지도 모르기 때문입니다.#딴 데서당신의 문제에 대한 간단한 해결책은location.hash그리고.substring()함수:

<!DOCTYPE html>
<html ng-app="app">

<head>
<script src="http://code.angularjs.org/1.2.6/angular.js"></script>
<link href="style.css" rel="stylesheet" />
<script>
angular.module('app', [])
.controller('AppCtrl', ['$scope', '$window', function($scope, $window) {
  $scope.accessToken = $window.location.hash.substring(14);
}]);
</script>
</head>

<body ng-controller="AppCtrl">
<h1>Access Token</h1>
<p>{{accessToken}}</p>
</body>

</html>

언급URL : https://stackoverflow.com/questions/20878335/how-do-i-parse-url-params-after-a-hash-with-angularjs

반응형