Javascript 创建一个泛型类,将敲除对象与页面绑定

Javascript 创建一个泛型类,将敲除对象与页面绑定,javascript,jquery,html,jquery-mobile,knockout.js,Javascript,Jquery,Html,Jquery Mobile,Knockout.js,我对knockout和jquery mobile有点陌生,有一个问题已经回答了,我需要优化PageStateManager类以使用通用绑定,目前PageStateManager只能用于一个绑定,如果有人能指导我创建一个泛型类来管理带有敲除绑定的页面状态,我将不胜感激。Heere是工作代码 Html 更新url: 提前感谢您我可能会创建一个导航服务,它只处理页面的更改,并让knockout和我的视图模型处理页面的状态 这种导航服务的一个简单示例可以是: function NavigationSer

我对knockout和jquery mobile有点陌生,有一个问题已经回答了,我需要优化PageStateManager类以使用通用绑定,目前PageStateManager只能用于一个绑定,如果有人能指导我创建一个泛型类来管理带有敲除绑定的页面状态,我将不胜感激。Heere是工作代码

Html

更新url:
提前感谢您

我可能会创建一个
导航服务
,它只处理页面的更改,并让knockout和我的视图模型处理页面的状态

这种
导航服务的一个简单示例可以是:

function NavigationService(){
    var self = this;

    self.navigateTo = function(pageId){
        $.mobile.changePage($('#' + pageId));
    };
}
然后,在视图模型中,您可以在希望导航到新页面时调用它。一个例子是选择医院(可以通过选择功能或手动订阅对
selectedHospital
observeable的更改来完成):

除了调用navigationService进行导航之外,跟踪哪个viewmodel应该绑定到哪里只是一个普通的问题。如果你问我的话,这比让jquerymobile跟踪哪个viewmodel去哪里容易多了


我已经更新了您的JSFIDLE,以展示如何做到这一点,对HTML代码进行尽可能少的更改。您可以在

找到更新的小提琴,您当前的小提琴没有多个“页面”。因此,在这种情况下,不太清楚“generic”是什么意思。你能详细说明你的问题和例子吗?我想用PageStateManager和其他淘汰视图模型,请看评论,我已经更新了url
<div data-role="page" data-theme="a" id="dashBoardPage" data-viewModel="dashBoardViewModel">
    <button type="button" data-bind="click: goToList">DashBoard!</button>
</div>
    var dashBoardViewModel = function() {
        var self = this;
        self.userName = ko.observable('Welcome! ' + "UserName");
        self.appOnline = ko.observable(true);

        self.goToList = function(){
            //I would like to use PageStateManager here 
    //        PageStateManager.changePage($("#firstPage"),viewModel);
            ko.applyBindings(viewModel,document.getElementById("firstPage"));//If I click Dashbord button multiple times it throws and multiple bind exception
            $.mobile.changePage($("#firstPage"));  
        }
    }
ko.applyBindings(dashBoardViewModel,document.getElementById("dashBoardPage"));
function NavigationService(){
    var self = this;

    self.navigateTo = function(pageId){
        $.mobile.changePage($('#' + pageId));
    };
}
self.selectHospital = function(hospital){
    self.selectedHospital(hospital);
    navigationService.navigateTo('detailsView');
};