0

URL が次のようになっている場合、アプリで関数を実行する必要があります

domain.com/mobile/#email_confirmed/email@address.com/otherparam

このルートをコントローラーの 1 つに追加しました。

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

この機能と同様に:

emailConfirmed: function (email, first)

しかし、関数が呼び出されることはありません...ただし、変更した場合は、次の URL に移動します。

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

その後、正常に動作します。問題は、メール アドレスのアットマークとドットにあると思います。したがって、メールアドレスを受け入れるようにルートを宣言する別の方法があるかどうか疑問に思っていました。

4

2 に答える 2

0

私が思いついた解決策は、次のようにルートを設定することです。

'email_confirmed/.*': 'emailConfirmed'

そして、emailConfirmed で次のようなパラメーターを取得します。

var hash = window.location.hash.split('/');
hash.shift();
// hash[0] => email
// hash[1] => first
于 2013-07-24T11:34:03.340 に答える
0

いい質問だ、

これを行うには、ジャンプする必要があるいくつかのフープがあります。最初に、「@」記号をエンコードまたは解析する必要があります。これを行うには、%40 にエンコードするか、追加のパラメーターを渡します。たとえば/myemail%40gmail/com/firstORの場合、それぞれOR/myemail/gmail/com/firstを作成します。次に、関数内で %40 をデコードするか、アドレスを一緒に解析します。function(usernamedomain, tlDomain, first)function(username, domain, tlDomain, first)

これを解決する別の方法として、ルーティング システムを完全にバイパスする方法があります。ユーザーが対話するためのリンクを作成する代わりに、リッスンできるイベント (リスト、ボタンなど) を起動する Sencha コンポーネントを作成し、コントローラー内でそのコントローラーの関数内のデータを使用するか、を使用して別のコントローラー関数を呼び出すthis.getApplication().getController('SomeOtherController').handleEmail(email, first);

私は試していませんが、最後のオプションを使用すると、URL をまったくエンコードする必要はありません。

繰り返しますが、いい質問です。他にも細かいところがあれば教えてください

がんばれ、ブラッド

于 2013-07-22T14:23:47.660 に答える