2013-05-23 21 views
8

Ho una risorsa definita come segue:angolare delle risorse codifica URL

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

A mio avviso ho:

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

dove go() è definito nel mio controller come:

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

Per l'articolo in questione, d.param è uguale a

TkZUOWZwcnc9Uldo%0ASzRvd2FiWk 

Ma quando chiamo DatumItem.get() con l'ID corretto, sta cambiando l'id di

TkZUOWZwcnc9Uldo%250ASzRvd2FiWk 

C'è un modo per evitare che il% venga codificato in% 25 in questo caso ?

Ho provato una combinazione di utilizzo di encodeURI, encodeURIComponent senza alcun risultato.

qualsiasi aiuto sarebbe molto apprezzato, grazie!

risposta

9

Dal momento che l'URL è già URIencoded è necessario per decodificarlo prima di passarlo a angolare:

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

questo ha funzionato perfettamente, grazie !! –

1

è anche possibile utilizzare unescape invece di decodeURIComponent.

Fare riferimento al di sotto frammento di codice -

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

Questa soluzione è deprecata, preferisce decodeURIComponent (p) – Leogout

0

ho creato un filtro nel progetto di angularJs per decodificare l'URL. Per esempio, se l'URL è- http://www.example.com/test1 test2 tes3

poi filtrare rendere l'URL come questo- http://www.example.com/test1-test2-tes3

nel mio progetto angolare il nome dell'applicazione principale è angularApp.

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

Ora si desidera creare un filtro per la decodifica URL.

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

Il codice di cui sopra è quello di creare un filtro per decodificare URL. E il mio nome di filtro è 'decodeURL'.useremo decodeURL come filtro nel mio codice

See the snapshot

Come utilizzare questo filtro nel HTML-

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

// Quanto sopra è per lo stato di routing in angularjs.

See the snapshot

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

// Il codice di cui sopra per il reindirizzamento URL.

See the snapshot