1

状況は、私がリンクを持っているということです:

アカウント情報の編集 - を指すhttp://example.com/user/edit

コントローラー内の情報のみを取得し、それをテンプレートにロードする JavaScript をセットアップします。イベント処理を行うこのコードがあります

$("#lnkEditUser").on("click", 
  function()
  {
    some.settings.edit_profile();
     return false;
  })

それが行うことは、divのコンテンツをテンプレートに置き換えることです。そのため、ajax呼び出しを介して、コントローラーから(モデルから)テンプレートと詳細をロードします。問題は、ページを更新しようとすると、コンテンツがデフォルトになることです。リンクをクリックすると、URL が次のように変わる可能性はありますか。

http://example.com/user#edit

ページを更新しても、ajax 経由で読み込まれたコンテンツは同じになりますか? #edit を削除すると、デフォルトになりますか?

4

2 に答える 2

0

私がこれを正しく行った場合、またはそれを行うためのより良い方法がある場合は、私を修正してください..

最初にハッシュが存在するかどうかを確認し、次にハッシュの値を取得し、それを変数に割り当ててからhash、ハッシュを削除しました。これもできるかもしれませんreplace("#", "")hash値の割り当て時に文字列に変換する必要があったように、これを入力しているときに他のものに気づきました。しかし、とにかく、これが私がやった方法です。

activeTemplateViaHash : function() {
    if (window.location.hash) {
        var hash = window.location.hash;
        hash = hash.toString().substr(1, hash.toString().length-1);
        var method = new Function('some.settings.' + hash + '()');
        method();
    }
},
于 2012-10-16T17:32:53.103 に答える
0

これを試してください:

activeTemplateViaHash : function() {
    if (window.location.hash) {
        var hash = window.location.hash;
        hash = hash.replace("#", "");
        var method = some.settings[hash]; //find the hash method
        if(method) {  //if the method exists then run it
            method();
        }
        else {
            alert(hash + " function doesn't exist!");
        }
    }
},

しかし、そのようなハッシュに頼る代わりに、localStorageまたはCOOKIESを使用してユーザー設定を簡単に保存します。

于 2012-12-24T19:06:14.100 に答える