當我使用KnockoutJS時,遇到了一種情況,我需要使用Jquery AJAX從數據庫中獲取數據。一旦我得到了響應,我需要將JSON響應與viewmodel部分逐個部分綁定,而不是綁定整個JSON。爲此我想用Jquery無限滾動功能。無限滾動使用KnockoutJS與單個AJAX調用
我發現夫婦從以前的問題的解決方案張貼在這裏without ajax call和with ajax call
但我的問題是,我只需要一個呼叫發送到數據庫並獲取匹配的記錄,並將其綁定的部分視圖模型的一部分,而不是推整個響應項目數組在我的viewmodel並綁定它。
<div id="main" data-bind="foreach: items">
<div data-bind="text: properties.MAPBLKLOT"></div>
</div>
<script>
var viewModel = {
items: ko.observableArray([])
};
var url = 'testdata.json';
$.getJSON(url).done(function (items) {
ko.utils.arrayForEach(items, function(item) {
viewModel.items.push(item);
});
});
ko.applyBindings(viewModel);
</script>
用於測試目的,我使用了一些示例JSON發現在互聯網上,但爲了簡單的目的,我只複製幾個記錄,理想的情況是我的最終響應可能包含超過2000條記錄
這裏是我的TESTDATA以.json
[
{
"type": "Feature",
"properties": {
"MAPBLKLOT": "2318026",
"BLKLOT": "2318026",
"BLOCK_NUM": "2318",
"LOT_NUM": "026",
"FROM_ST": "2048",
"TO_ST": "2048",
"STREET": "SANTIAGO",
"ST_TYPE": "ST",
"ODD_EVEN": "E"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-122.489637118874,
37.7444192929202,
0
],
[
-122.489651451294,
37.7446249545443,
0
],
[
-122.48954916239,
37.74462945745,
0
],
[
-122.489534792816,
37.7444237964457,
0
],
[
-122.489637118874,
37.7444192929202,
0
]
]
]
}
},
{
"type": "Feature",
"properties": {
"MAPBLKLOT": "2318027",
"BLKLOT": "2318027",
"BLOCK_NUM": "2318",
"LOT_NUM": "027",
"FROM_ST": "2282",
"TO_ST": "2282",
"STREET": "32ND",
"ST_TYPE": "AVE",
"ODD_EVEN": "E"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-122.489449018252,
37.7446338654758,
0
],
[
-122.48954916239,
37.74462945745,
0
],
[
-122.489651451294,
37.7446249545443,
0
],
[
-122.489656228785,
37.7446935084171,
0
],
[
-122.489353664903,
37.7447068261707,
0
],
[
-122.489348875236,
37.7446382733974,
0
],
[
-122.489449018252,
37.7446338654758,
0
]
]
]
}
},
{
"type": "Feature",
"properties": {
"MAPBLKLOT": "2318028",
"BLKLOT": "2318028",
"BLOCK_NUM": "2318",
"LOT_NUM": "028",
"FROM_ST": "2278",
"TO_ST": "2278",
"STREET": "32ND",
"ST_TYPE": "AVE",
"ODD_EVEN": "E"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-122.489253520649,
37.7447112340303,
0
],
[
-122.489353664903,
37.7447068261707,
0
],
[
-122.489656228785,
37.7446935084171,
0
],
[
-122.489661007419,
37.7447620622697,
0
],
[
-122.48924661819,
37.7447803023226,
0
],
[
-122.489241841072,
37.7447117484342,
0
],
[
-122.489253520649,
37.7447112340303,
0
]
]
]
}
},
{
"type": "Feature",
"properties": {
"MAPBLKLOT": "2318028A",
"BLKLOT": "2318028A",
"BLOCK_NUM": "2318",
"LOT_NUM": "028A",
"FROM_ST": "2274",
"TO_ST": "2274",
"STREET": "32ND",
"ST_TYPE": "AVE",
"ODD_EVEN": "E"
},
"geometry": {
"type": "Polygon",
"coordinates": [
[
[
-122.489661007419,
37.7447620622697,
0
],
[
-122.489665784928,
37.7448306161404,
0
],
[
-122.489251395318,
37.7448488562099,
0
],
[
-122.48924661819,
37.7447803023226,
0
],
[
-122.489661007419,
37.7447620622697,
0
]
]
]
}
}
]
您能更具體地瞭解您的問題嗎? – Damien
那麼,你想在一次推動整個響應,而不是逐項推動它? –
我不希望在將viewmodel綁定到我的視圖之前將整個響應推送到viewmodel,我想從響應中推入記錄集讓我們假設我的響應是否有1000條記錄我想每次用戶滾動時都要推送和綁定100個記錄頁面底部。 – user3033807