2013-07-22 40 views
0

我需要我的應用程序執行的一種功能,當URL看起來像這樣路由系統:在參數傳遞電子郵件

domain.com/mobile/#email_confirmed/[email protected]/otherparam 

我加了這條路線到我的控制器的一個:

'email_confirmed/:email/:first': 'emailConfirmed' 

以及此功能:

emailConfirmed: function (email, first) 

但該函數永遠不會被調用...但是,如果我改變去這個網址:

domain.com/mobile/#email_confirmed/emailaddresscom/otherparam 

然後它工作正常。我想這個問題來自電子郵件地址中的符號和點。因此,我想知道是否有另外一種方法來聲明路由,以便它接受電子郵件地址。

+0

[路由PARAMS不與某些字符的工作](http://www.sencha.com/forum/showthread.php?179882-Routes-params-not-working-with-some字符) – Viswa

回答

0

我想出瞭解決的辦法是建立這樣的路線:

'email_confirmed/.*': 'emailConfirmed' 

然後我檢索PARAMS像這樣在emailConfirmed:

var hash = window.location.hash.split('/'); 
hash.shift(); 
// hash[0] => email 
// hash[1] => first 
0

有趣的問題,

有一對夫婦箍你必須跳通過做到這一點,首先需要進行編碼或在您的「@」符號解析。通過編碼爲%40或者通過傳遞附加參數來完成此操作。例如/myemail%40gmail/com/first/myemail/gmail/com/first,然後分別創建function(usernamedomain, tlDomain, first)function(username, domain, tlDomain, first)。然後在函數內解碼%40或者解析地址。

另一種方式我可以看到你解決這個問題將包括完全繞過路由系統。您不需要創建一個鏈接讓用戶與創建Sencha組件進行交互,它將觸發您可以監聽的事件(列表,按鈕等),然後在您的控制器中您可以使用該控制器中某個功能內的數據,或者調用另一個控制器功能使用this.getApplication().getController('SomeOtherController').handleEmail(email, first);

我還沒有嘗試過,但最後一個選項,你不應該編碼你的網址。

再次,很好的問題。讓我知道,如果有一些其他的細節,

祝你好運,布拉德

+0

由於電子郵件地址在地址的第一部分中可能包含未知數量的點,因此第一個解決方案無法工作。因此,不僅可能有一個url方案。第二種解決方案是不可能的,因爲用例將是「用戶收到一封包含鏈接以確認其電子郵件地址的電子郵件」。 –

+0

你的用戶將如何調用這個網址? – bwags

+0

他們點擊電子郵件中的鏈接。 –