我有一个包含三个子页面的单页应用程序。
网址结构是:
/page (sub-page-0)
/page#sub-page-1
/page#sub-page-2
查看模型是:
function ViewModel(activePage){
var self=this;
self.activePage=ko.observable(activePage);
self.changePage=function (newPage){
self.activePage(newPage);
//change url
});
}
当用户输入url时,我想在javascript中获取#part并使用此参数构造ViewModel。
当用户点击页面中的链接时,我想更改URL并加载该子页面。
答案 0 :(得分:5)
您可以使用堆栈溢出问题中的一个解决方案:How can I get query string values in JavaScript?
但是,我强烈建议您考虑使用客户端路由库。淘汰赛主页有example使用sammyjs,但还有许多其他有趣的解决方案(包括knockback,它结合了backbonejs和knockoutjs)。
答案 1 :(得分:3)
Knockout本身不支持导航。但是您可以使用第三方框架。来自http://learn.knockoutjs.com/的淘汰赛有一个名为“单页应用程序”的教程,该教程展示了如何使用sammy.js。