2013-05-23 17 views
8

私は次のように定義されたリソースがあります。私の見解では角度リソースのエンコードURL

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

を私は持っている:

行くが()としての私のコントローラに定義されている
<div ng-click="go('/datum/' + d.to_param)">Test</div> 

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

d.paramは

と等しいです10
TkZUOWZwcnc9Uldo%0ASzRvd2FiWk 

しかし、私は、正しいIDとDatumItem.get()を呼び出すと、それは

TkZUOWZwcnc9Uldo%250ASzRvd2FiWk 

にIDを変更され、この場合には25%に符号化されるの%を防止する方法はあります?

私は、encodeURI、encodeURIComponentを無駄に使用する組み合わせを試みました。

ご協力いただきありがとうございます、ありがとうございます! URLは、すでにあなたが角度に渡す前に、それをデコードする必要がURIencodedされているので

答えて

9

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

は、これは完全に働いた、ありがとう! –

1

あなたもアンエスケープ代わりには、decodeURIComponentのを使用することができます。

は、コードスニペットの下に参照してください -

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

このソリューションは推奨されません。decodeURIComponent(p) – Leogout

0

私はURLをデコードするangularJsプロジェクトでフィルタを作成しました。たとえば あなたのURLは - http://www.example.com/test1 test2はtes3

はその後、私の角度のプロジェクトのメインアプリ名はangularAppある中this- http://www.example.com/test1-test2-tes3

のようなURLを作成するフィルタリングます。

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

今、あなたは、デコードURLのフィルタを作成します。

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

上記のコードは、URLをデコードするためのフィルタを作成することです。私のフィルタ名は 'decodeURL'です。我々は、上記//

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

HTML-に私のコードこのフィルタを使用する方法

See the snapshot

にフィルタとしてdecodeURLを使用しますangularjsにおける状態ルーティングのためです。

See the snapshot

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

// URLのリダイレクトのため、上記のコード。

See the snapshot