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

尝试这样做:

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!");
        }
    }
},

但是,我不会像那样依赖散列,而是使用localStorageCOOKIES轻松存储用户设置。

于 2012-12-24T19:06:14.100 回答
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 回答