敲除Pager.js数据没有绑定

时间:2013-12-23 00:46:52

标签: jquery c#-4.0 knockout.js pagerjs

我是淘汰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请求并绑定硬编码数据绑定有效。

由于

1 个答案:

答案 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();