用淘汰和微风分页

时间:2013-07-29 19:54:32

标签: knockout.js breeze single-page-application durandal

我正在尝试实现简单的分页,但无法弄清楚我做错了什么。

这就是我所拥有的。

search.html

<ul data-bind="foreach:leases">
    <li data-bind="text: leaseID"></li>
</ul>

<button class="btn" data-bind="click: next">Next</button>

<div data-bind="dump: $data.leases"></div>

search.js

var currentPage = ko.observable();
var totalPages = ko.observable();
var totalRecords = ko.observable();
var leases = ko.observableArray();


//#region Internal Methods
activate = function() {
    currentPage(0);
    return datacontext.getLeases(leases, totalPages, totalRecords, currentPage);

},

next = function() {
    currentPage(currentPage() + 1);
    return datacontext.getLeases(leases, totalPages, totalRecords, currentPage);
},

vm = {
    activate: activate,
    leases: leases,
    title: 'Hi there',
    next: next
};

return vm;

datacontext.js

var getLeases = function (leasesObservable, totalpages, totalrecords, currentPage) {
        var query = entityQuery.from('Leases')
            .skip(currentPage() * 5).take(5)
            .orderByDesc("leaseID")
            .inlineCount(true);

        return manager.executeQuery(query, leasesObservable)
            .then(querySucceeded)
            .fail(queryFailed);

        function querySucceeded(data) {
            if (leasesObservable) {
                leasesObservable(data.results);
                totalpages(Math.ceil(data.inlineCount / 5));
                totalrecords(data.inlineCount);
            }
        }
    };

我的激活中的调用工作正常,显示前5个结果。当我单击下一个按钮时,会返回数据,但是出现错误。

无法解析bindings.↵Message:ReferenceError:未定义leaseID;↵Bindings值:text:leaseID“

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我预先看到了一些问题 -

您正在将两个参数传递给executeQuery方法,第二个参数是您的成功回调 - 但您传递的是您的observable。这不应该打破你的查询,但我很好奇目的是什么。您可能只是尝试执行查询,然后在返回promise时执行querySucceeded方法 -

return manager.executeQuery(query)
        .then(querySucceeded)
        .fail(queryFailed);

如果未能正确退回承诺,我会得到90%的错误。

我没有看到任何应该在第一次通话中起作用而不是第二次通话。我很好奇当你在Breeze查询之外点击你的URI时会发生什么。

我强烈推荐你在你的场景中做的另一件事,或者你有任何绑定中断的时候是pre pre $ data。在你的观察中,在这种情况下是leaseID。

<ul data-bind="foreach: leases">
    <li data-bind="text: $data.leaseID"></li>
</ul>

这不会解决你的应用程序中的任何问题,但它会取出其中一个变量(AKA它不会破坏你的绑定)

我注意到的另一件事是你的转储数据绑定,我做了一个快速的谷歌搜索,看到它与调试有关 - 你确定你已经设置了这个自定义绑定处理程序吗?

<div data-bind="dump: $data.leases"></div>