Knockout.js 风吹草动

Knockout.js 风吹草动,knockout.js,breeze,single-page-application,durandal,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

我试图实现简单的分页,但不知道我做错了什么

这是我的

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>
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);
            }
        }
    };
my activate(我的激活)中的呼叫工作正常,并显示前5个结果。单击“下一步”按钮时,返回数据,但出现错误

无法分析绑定。↵消息:ReferenceError:未定义leaseID;↵绑定值:text:leaseID“


有什么想法吗?

我在前面看到了一些问题-

您正在将两个参数传递给executeQuery方法,第二个参数是成功回调,但您将其传递给了observable。这不应该破坏您的查询,但我很好奇其目的是什么。您可能正在尝试执行查询,然后在您的承诺完成时执行QuerySucceed方法返回时—

return manager.executeQuery(query)
        .then(querySucceeded)
        .fail(queryFailed);
你得到的Q错误是我90%的时候得到的,当一个承诺没有得到正确的回报

在第一次调用和第二次调用中,我看不到任何应该起作用的东西。我很好奇当您在Breeze查询之外点击URI时会发生什么

我强烈建议您在场景中或任何时候进行绑定中断时做的另一件事是预先添加$data

<ul data-bind="foreach: leases">
    <li data-bind="text: $data.leaseID"></li>
</ul>
这不会修复应用程序中出现的任何问题,但会删除其中一个变量(即不会破坏绑定)

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

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

我在前面看到了一些问题-

您正在将两个参数传递给executeQuery方法,第二个参数是成功回调,但您将其传递给了observable。这不应该破坏您的查询,但我很好奇其目的是什么。您可能正在尝试执行查询,然后在您的承诺完成时执行QuerySucceed方法返回时—

return manager.executeQuery(query)
        .then(querySucceeded)
        .fail(queryFailed);
你得到的Q错误是我90%的时候得到的,当一个承诺没有得到正确的回报

在第一次调用和第二次调用中,我看不到任何应该起作用的东西。我很好奇当您在Breeze查询之外点击URI时会发生什么

我强烈建议您在场景中或任何时候进行绑定中断时做的另一件事是预先添加$data

<ul data-bind="foreach: leases">
    <li data-bind="text: $data.leaseID"></li>
</ul>
这不会修复应用程序中出现的任何问题,但会删除其中一个变量(即不会破坏绑定)

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

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


控制台。记录
数据中查询成功的
方法中得到的信息。结果
并用输出更新您的帖子!我已更正。激活时加载数据,然后第一次单击“下一步”,我会得到以下错误:[Q]未处理的拒绝原因(应为空):在此之后,单击“下一步”按钮返回数据,但此时绑定已断开。请
控制台。记录
查询
方法中获得的内容,然后在
数据中执行
方法。结果
并用输出更新帖子!我已更正。激活时加载数据,然后第一次单击“下一步”,我将获得以下信息ing错误:[Q]未处理的拒绝原因(应为空):之后,单击“下一步”按钮返回数据,但此时绑定已损坏。删除第二个参数修复了它。我查看代码太久,甚至没有注意到它。谢谢!我已设置了转储绑定,我不打算将其包含在此处,但复制/粘贴了太多。删除第二个参数f我已经把它搞定了。我已经看了这么久的代码,我甚至没有注意到它。谢谢!我已经设置了转储绑定,我不打算在这里包括它,但是复制/粘贴太多了。