2013-08-30 46 views
1

如何將關鍵字(包含特殊字符)作爲$ routeParam傳遞給AngularJS應用程序?在angularjs中執行控制器兩次的routeparams中的特殊字符

$routeProvider.when('/search/:keyword', {templateUrl:'someURL', controller:SearchCtrl})

關鍵字可以包含特殊字符。

因此,在重定向到此頁面之前,我已將encodeURIComponent編碼爲「關鍵字」。

當這個「關鍵詞」有一些特殊的字符,如「$ @,&,逗號」等,然後控制器兩次執行。

EX: 如果關鍵字 '$' 符號, 的控制器

  • 執行與該符號的編碼形式(#/搜索/%24)第一
  • 執行第二實際符號(#/搜索/ $)

這不克拉的情況下( '^')符號出現。

我錯過了某處或者我的方法不正確。

回答

4

使用變通方法來對付這種情景:

utils.encodeUriQuery = function (val) { 
     return encodeURIComponent(val). 
      replace(/%40/gi, '@'). 
      replace(/%3A/gi, ':'). 
      replace(/%24/g, '$'). 
      replace(/%2C/gi, ','). 
      replace(/%26/gi, '&'). 
      replace(/%3D/gi, '='). 
      replace(/%2B/gi, '+'); 
    } 

調用上面的函數之前,我通過搜索關鍵字的URL

$window.location.href = "/#/search/" + utils.encodeUriQuery(searchKeyword); 

注:utils的是一個工廠。

+0

答案並不那麼明確。你也應該提供什麼是使用情況,因爲我得到參考錯誤。請提高您的答案 – Icet

+0

這只是一個想法,其中utils是一個工廠,是的,我的第二個片段中有一個錯字,謝謝。 – Sai

+0

謝謝,現在它有感覺:-) – Icet

相關問題