2012-12-20 23 views
2

我正在開發管理面板到我的網站,並決定用淘汰賽和sammy做到這一點。但我面臨路由問題。我有兩個頁面:Knockout.js和Sammy.js錯誤的行爲

http://localhost/admin/element and http://localhost/admin/category. 

在我的元素頁面,我有以下薩米配置:

Sammy(function() { 
      this.get('#:currentpage', function() { 
       self.reloadPage(this.params.currentpage); 
      }); 

      this.get('', function() { 
       this.app.runRoute('get', '#1'); 
      }); 
     }).run(); 

一切都運行完美,但如果我嘗試去到另一個頁面(按普通鏈接,如Edit Categories)我只是到了同一頁面上的空路線,所以我只是不能去鏈接另一頁。任何想法如何解決這個問題?

回答

4

請勿在您的Sammy配置中使用''。相反,請嘗試使用'/'作爲根頁面或'/ admin/element'作爲元素。

var Router = function() { 
    var sammy = new Sammy.Application(function() { 

      this.get('#:currentpage', function(context) { 
       alert(context.params.currentpage); 
      }); 

      this.get('/admin/element', function() { 
       this.app.runRoute('get', '#1'); 
      }); 

     }), 
     run = function() { 
      sammy.run(); 
     }; 

    return { 
     run: run 
    }; 
}; 

$(function() { 
    var r = new Router(); 
    r.run(); 
}); 

PS:該示例使用了Sammy 0.7.1的版本。在0.6.3版本中還有另一種行爲。

+0

感謝做到這一點,這個簡單的建議,對我幫助很大:) – Eugene

0

這工作,如果你有一個動作的鏈接,並希望通過點擊其他頁面

`<li>@Html.ActionLink("Admin Action Link Test", "Admin", "Home")</li> 
this.get('/Home/Admin', function() 
       { 
        location.assign("/Home/Admin"); 
       });` 

,或者您可以使用哈希

<li><a href="#/Home/About">About Full Path</a></li> 
this.get('#/Home/About', function() 
       {      
        location.assign("/Home/About");     
       });