我是淘汰JS和Pager.JS的新手我试图在ajax请求上绑定数据。但它不起作用。
define(['knockout', 'pager'], function (ko, pager) {
var viewModel = {
preview: function(page) {
pager.navigate('#Preview');
}
};
$.getJSON(contentUrl + 'api/Data/UserData', function (data) {
var jsonData = JSON.parse(data);
formViewModel = ko.mapping.fromJS(jsonData, {}, viewModel );
ko.applyBindings(formViewModel);
});
pager.extendWithPage(viewModel);
ko.applyBindings(viewModel);
pager.start();
});
<div data-bind="page: {id: 'start', title: 'User Details'}" class="off">
<form id="userDetails" name="userDetails" method="post">
<div class="details">
<div class="columns clearfix">
<div class="row">
<div class="label">User Name</div>
<span data-bind="text: Name" class="txt"></span>
</div>
<div class="row">
<div for="Address" class="label">User Address</div>
<span data-bind="text: Address" class="txt"></span>
</div>
</div>
</div>
<div class="nav-buttons hide-for-print">
<a href="#Preview" data-bind="click: preview" class="btn" id="preview">Preview</a>
</div>
</form>
</div>
<div data-bind="page: {id: 'Preview', title: 'User Details| Preview'}" class="off">
Preview page
</div>
<div data-bind="page: {id: '?'}" class="off">
<h2>Error</h2>
<p>The page you requested does not exist.</p>
<p><a data-bind="page-href: '../'" id="">Go back</a></p>
</div>
我不明白我错过了什么。如果我没有发出ajax请求并绑定硬编码数据绑定有效。
由于
答案 0 :(得分:0)
猜测一下,我建议两次调用ko.applyBindings,我也不认为当你进行更新时,fromJS会返回任何内容。同样,我不认为在更新模式下调用该方法会在视图模型上创建observable,虽然我可能在那里错了,但我在执行更新映射之前总是进行“创建”映射。
我更喜欢这样做:
var viewModel = {};
$.getJSON(contentUrl + 'api/Data/UserData', function (data) {
var jsonData = JSON.parse(data);
viewModel = ko.mapping.fromJS(jsonData, {});
viewModel.preview = function(page){
pager.navigate('#Preview');
};
});
pager.extendWithPage(viewModel);
ko.applyBindings(viewModel);
pager.start();