Khi tôi điều hướng đến trang chi tiết đến lần thứ hai, trang trở nên trần truồng, tất cả các kiểu biến mất khỏi trang, tôi có thể tìm ra lý do, ví dụ http://jsfiddle.net/Hpyca/24/Kiểu di động Jquery không áp dụng trong điều hướng thứ hai đến trang chi tiết
Html
<div data-role="page" id="dashBoardPage" data-bind="with: dashboardData">
<button type="button" data-bind="click: goToList">DashBoard!</button>
</div>
<div data-role="page" id="firstPage" data-bind="with: hospitalList">
<div>
<div id="listViewDiv">
<ul data-role="listview" data-bind="foreach: hospitals">
<li data-bind="click: $parent.selectHospital">
<h2>Hospital Id:<span data-bind="text:id"></span></h2>
<p>Name <span data-bind="text:name"></span></p>
</li>
</ul>
</div>
</div>
</div>
<div data-role="page" id="detailsView" data-bind="with: hospitalList.selectedHospital">
<a href="#firstPage">Back</a>
<a href="#dashBoardPage">Home</a>
<div>
<div data-role="tabs" id="tabs">
<div data-role="navbar">
<ul>
<li><a href="#one" data-ajax="false">Info</a></li>
<li><a href="#two" data-ajax="false">Details</a></li>
</ul>
</div>
<div id="one" class="ui-body-d ui-content">
<h2>Hospital Id : <span data-bind="text:id"></span></h2>
</div>
<div id="two">
<h2>Id : <span data-bind="text:id"></span></h2>
<input data-mini="true" tabindex="5" data-bind="value: name"
id="name"/>
</div>
</div>
</div>
</div>
js
function NavigationService(){
var self = this;
self.navigateTo = function(pageId){
$.mobile.changePage($('#' + pageId));
};
}
//You need to determine if you want to handle dependencies using requirejs or just global variables.
var navigationService = new NavigationService();
function HospitalViewModel(data){
var self = this;
self.id = data.id;
self.name = ko.observable(data.name);
}
function DashboardViewModel(data){
var self = this;
self.goToList = function(){
navigationService.navigateTo('firstPage');
};
}
function HospitalListViewModel(data){
var self = this;
self.hospitals = data;
self.selectedHospital = ko.observable();
self.selectHospital = function(hospital){
self.selectedHospital(hospital);
navigationService.navigateTo('detailsView');
};
}
function PageViewModel(){
var self = this;
//This list should be retrieved from a service of some kind
var allHospitals = [
{"id":"001","name":"Hospital1","location":"SL"},
{"id":"002","name":"Hospital2","location":"SL"}
].map(function(hospital){return new HospitalViewModel(hospital);});
self.hospitalList = new HospitalListViewModel(allHospitals);
self.dashboardData = new DashboardViewModel();
}
ko.applyBindings(new PageViewModel());
Để tạo lại lỗi, Click (bảng điều khiển) -> Click (ListElement) -> Nhấp vào (Quay lại, Trang chủ) -> Nhấp vào (một lần nữa phần tử danh sách -> đi tới trang chi tiết), bây giờ bạn có thể thấy giao diện người dùng khỏa thân,
Có cách này cũng làm việc cho tôi, nhưng làm thế nào tôi có thể gọi một chức năng trong phạm vi đối tượng này, tôi đã cập nhật http://jsfiddle.net/Hpyca/28/, Tôi có thể sử dụng loại bỏ "mẫu", inste hay không quảng cáo của "với" – ExCode
@ExCode Có, bạn có thể sử dụng mẫu loại bỏ và chức năng gọi trong phạm vi đối tượng; nhưng nó không phải là (luôn luôn) cần thiết. Tham số đầu tiên trong một hàm xử lý sẽ chứa giá trị của mô hình hiện tại. Xem [cập nhật fiddle] (http://jsfiddle.net/Hpyca/29/) (đi đến các chi tiết của bệnh viện). cái đó có giúp ích không? – rwisch45
@ rwisch45 cảm ơn bạn đã phản hồi.in mã được cập nhật của bạn (http: // jsfiddle.net/Hpyca/29 /) css lỗi vẫn tiếp tục, tôi muốn hơn đến vấn đề css.Để tái sản xuất vấn đề, Click (DashBoard) -> Click (ListElement) -> Click (Back, Home) -> Click (một lần nữa danh sách yếu tố -> đi đến trang chi tiết), bây giờ bạn có thể thấy giao diện người dùng trần truồng, – ExCode