2013-05-23 15 views
8

Mam zasobu zdefiniowane następująco:kątowa zasobów Kodowanie URL

app.factory("DatumItem", function($resource) { 
    return $resource('/data/:id', {id: '@id'}); 
}); 

Moim zdaniem mam:

<div ng-click="go('/datum/' + d.to_param)">Test</div> 

gdzie Go() jest zdefiniowana w moim kontrolera jako:

$scope.go = function (params) { 
    $location.path(params); 
}; 

W przypadku przedmiotowej pozycji d.param jest równe

TkZUOWZwcnc9Uldo%0ASzRvd2FiWk 

Ale gdy zgłoszę DatumItem.get() z prawidłowym ID, to zmienia identyfikator

TkZUOWZwcnc9Uldo%250ASzRvd2FiWk 

Czy istnieje sposób, aby zapobiec% przed zakodowany do 25% w tym przypadku ?

Próbowałem kombinacji użycia encodeURI, encodeURIComponent bezskutecznie.

każda pomoc byłaby bardzo ceniona, dzięki!

Odpowiedz

9

Ponieważ adres URL jest już URIencoded trzeba dekodować go przed przekazaniem go do kątowa:

$scope.go = function (params) { 
    $location.path(decodeURIComponent(params)); 
}; 
+0

To działało idealnie, dzięki !! –

1

można również użyć unescape zamiast decodeURIComponent.

Patrz poniżej fragment kodu -

$scope.go = function (params) { 
    $location.path(unescape(params)); 
}; 
+0

To rozwiązanie jest przestarzałe, najlepiej decodeURIComponent (p) – Leogout

0

Stworzyłem filtr w projekcie angularjs do dekodowania URL. Na przykład jeśli adres URL jest- http://www.example.com/test1 test2 tes3

Następnie filtrować zrobić URL jak to- http://www.example.com/test1-test2-tes3

w moim projekcie kątowej głównym nazwa aplikacji jest angularApp.

var app = angular.module('angularApp', []);// This is your main angular app. 

Teraz chcesz utworzyć filtr dla dekodowania URL.

app.filter('decodeURL', function() { 
    return function(text) { 
     if(text) { 
      return text.split(' ').join('-').toLowerCase().replace(/[^a-z0-9]+/g, '-'); 
     } 
    } 
}); 

Powyższy kod jest stworzenie filtra do dekodowania URL. A moją nazwą filtru jest "decodeURL".użyjemy decodeURL jako filtr w moim kodu

See the snapshot

Jak korzystać z tego filtru w formacie HTML

<a ui-sref="{{business.category[0].categoryName.toLowerCase()}}Detail({id:business.id,title:(business.title | decodeURL)})"></a> 

// Powyższy stan jest dla routingu w angularjs.

See the snapshot

<a href="/coupon/{{coupon.id}}/{{coupon.title | decodeURL}}" 
             class="btn btn-warning show-btnhome show-button-margin">Show</a> 

// Powyższy kod URL przekierowania.

See the snapshot