2013-07-29 57 views
1

我想實現簡單的分頁,但無法弄清楚我做錯了什麼。分頁與淘汰賽和微風

這是我的。

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:不定義leaseID;↵Bindings值:文本的ReferenceError:leaseID」

任何想法

+0

請'console.log'在'data.results'的'querySucceeded'方法中獲得什麼,並用輸出更新您的文章! – nemesv

+0

我糾正了。激活數據加載,然後我第一次點擊下一步我得到以下錯誤: [Q]未處理的拒絕原因(應該是空的): 之後點擊Next按鈕返回數據,但到那時綁定是已經壞了。 – Cooper

回答

1

有跡象表明,我看到了前面的幾個問題 -

您將兩個參數傳遞給executeQuery方法,其中第二個參數是您的成功回調 - 但是您將它傳遞給observable,這不應該打破您的查詢,但我很好奇目的是什麼。您可能試圖執行查詢,然後在您的承諾退回時執行querySucceeded方法ned -

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

您收到的Q錯誤是當承諾沒有正確返回時90%的時間。

我沒有看到任何應該工作的第一個電話,而不是第二個。我很好奇當你在你的Breeze查詢之外擊中你的URI時會發生什麼。

另一件我強烈建議你在場景中做的事情,或者任何時候你有這樣一個綁定中斷的地方是預先安裝$ data。給你的可觀察的,在這種情況下是leaseID。

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

這不會解決什麼是在你的應用打破,但它會取出變量(AKA它不會破壞你的綁定)

一兩件事我注意到的是一你的轉儲數據綁定,我做了一個快速的谷歌搜索,看到它與調試有關 - 你確定你有這個自定義綁定處理程序設置?

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

刪除第二個參數修復了它。我一直在查看這些代碼,甚至沒有注意到它。謝謝! 我確實設置了轉儲綁定,我不打算在這裏包含它,但是複製/粘貼太多。 – Cooper