DDP Search API
Basic jQuery.ajax test with all data.
by andypotanin
HTML
<script src="http://cdnjs.cloudflare.com/ajax/libs/knockout/3.1.0/knockout-min.js"></script>
<script src="http:////cdnjs.cloudflare.com/ajax/libs/knockout.mapping/2.4.1/knockout.mapping.js"></script>
<script src="http://cdn.udx.io/lib/jquery.ajax.js"></script>
<div data-bind="template: {name: 'model-template', foreach: hits}"></div>
<script id="model-template" type="text/html">
<ul class="event">
<li data-bind="text: $data.post_title"></li>
<li data-bind="text: $data._id"></li>
<li data-bind="text: $data._index"></li>
</ul>
</script>
CSS
ul.event {
background: #DADADA;
margin-bottom: 1em;
}
JavaScript
function getData(query, callback) {
console.log('getData');
jQuery.ajax('http://api.discodonniepresents.com/search/' + query, {
type: 'GET',
dataType: 'json',
headers: { 'x-access-key': 'zkfs-dixy-eejh-wkgg-zcvs-arkv-zeek-onzj' }
}).done(callback);
}
function myModel() {
console.log('myModel');
var self = this;
this.size = 10;
this.hits = ko.observableArray();
this.updateData = function updateData() {
self.size = (self.size + 10);
console.log('updateData', self.size);
getData('?q=_type:hdp_event&size=' + self.size, function haveData(data) {
console.log('Have %s items', data.hits.length);
// data.hits.forEach(function (item) { self.hits.push( item ); });
ko.mapping.fromJS(data, {
key: function (item) {
return ko.utils.unwrapObservable(item._id);
}
}, self);
});
};
// <button data-bind="click: updateData">Load More</button>
window.setTimeout(this.updateData);
return this;
}
ko.applyBindings(myModel);