2012-11-29 88 views
0

我在spa模板(c#,mvc 4)中使用sammy腳本。 默認鏈接如下:/#/ home,/#/ contacts,/#/ faq等。 如何在/ home,/ contacts,/ faq上更改它們?如何更改sammy路線

回答

0

散列描繪了URL的本地部分,可以使用location.hash方法對其進行修改。如果您修改整個網址,即location.href,瀏覽器將加載修改後的網址。

它看起來像你想要做的是改變你的本地URL,由Sammy使用,以#home#contacts,所以你在開始時沒有空的散列。

下面,薩米被捕獲更改URL,如用href="#Home"錨元素的用戶點擊,然後發送一個AJAX請求,以獲得模板:

Sammy(function() { 
/* Navigation requests 
*/ 
    this.get("#:view", function() { 
     switch (this.params.view) {     
      case "Home": 
       $.ajax("Home/Index", { 
        type: "GET", 
        success: function (result) { 
         //Append result to page 
        }, 
        cache: false 
       }); 
       break; 
      case "Search": 
       $.ajax("Search/Index", { 
        type: "GET", 
        success: function (result) { 
         //Append result to page 
        }, 
        cache: false 
       }); 
       break;     
     }; 
    }); 
}).run(); 
+0

不完全是。 我有2條路線:「#/ home」和「#/ contact」。一切正常。 現在我想改變這兩條路線,並有以下幾點:「家」和「聯繫」(沒有'#'前綴)。當我這樣做時,瀏覽器會顯示「找不到」。我該如何「欺騙」瀏覽器? – yakov

+0

您可以使用'location.assign(「home」)'來代替AJAX請求,但是會加載新文檔,類似於'location.href ='的工作方式。既然你說你正在構建一個單頁面的應用程序,我想你會想異步地加載並輸入新的內容到頁面,這意味着你將不得不使用本地URL,這意味着哈希。 – chrisjsherm