Javascript 创建一个泛型类,将敲除对象与页面绑定
我对knockout和jquery mobile有点陌生,有一个问题已经回答了,我需要优化PageStateManager类以使用通用绑定,目前PageStateManager只能用于一个绑定,如果有人能指导我创建一个泛型类来管理带有敲除绑定的页面状态,我将不胜感激。Heere是工作代码 Html 更新url: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和我的视图模型处理页面的状态
这种导航服务的一个简单示例可以是:
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');
};