数据源无法使用分页映射到转换后的json



我使用pagination.js加载异步数据,使用以下代码片段。

$('#demo').pagination({
dataSource: 'https://api.flickr.com/services/feeds/photos_public.gne?tags=cat&tagmode=any&format=json&jsoncallback=?',
locator: 'items',
totalNumber: 120,
pageSize: 20,
ajax: {
beforeSend: function() {
dataContainer.html('Loading data from flickr.com ...');
}
},
callback: function(data, pagination) {
// template method of yourself
var html = template(data);
dataContainer.html(html);
}
})

由于我的json结构不同,我需要在将json映射到数据源之前对其进行转换,因此我将上面的代码更改为如下所示:

$('#demo').pagination({
dataSource: getTransformedJson(),
locator: 'items',
totalNumber: 120,
pageSize: 25,
ajax: {
beforeSend: function() {
container.prev().html('Loading products data ...');
}
},
callback: function(response, pagination) {
var dataHtml = '<ul>';
console.log('response', response)
$.each(response, function (index, item) {
dataHtml += '<li>' + item.productName + '</li>';
});
dataHtml += '</ul>';
container.prev().html(dataHtml);
}
})
});

然而,在回调中,console.log('response', response)总是在浏览器控制台中显示空数组response []。下面是我的getTransformedJSON()函数:

function getTransformedJson() {
$.getJSON('./products.json', function(data) {         
transformedData = data;
totalCount = data['response']['totalCount'];
transformedData['items'] = data['response']['results'];
delete transformedData['response']["results"];
console.log(transformedData);
});
return transformedData;
}

但在我的getTransformedJson()函数中,console.log(transformedData);显示了正确转换的json数据。请对此进行任何修复。

类似这样的东西:

dataSource: function(done) {
$.getJSON('./products.json', function(data) {         
transformedData = data;
totalCount = data['response']['totalCount'];
transformedData['items'] = data['response']['results'];
delete transformedData['response']["results"];
done(transformedData);
});

}

最新更新