JSFiddle - React, Tailwind, and code Playground
HTML
<script src="http://cloud.github.com/downloads/SteveSanderson/knockout/knockout-2.0.0.js"></script>
<script src="https://raw.github.com/SteveSanderson/knockout.mapping/master/build/output/knockout.mapping-latest.js"></script>
<!-- ko if: (Results && Results.response && Results.response.docs) -->
<div id="search-results" data-bind="foreach: Results.response.docs">
<pre data-bind="text: JSON.stringify(ko.toJS($root.Results.highlighting()[Id()]), null, 2)"></pre>
<pre data-bind="text: ($root.Results.highlighting()[Id()]).Title"></pre>
</div>
<!-- /ko -->
JavaScript
var MyViewModel = function() {
var self = this;
self.mapping = {
'response.docs': {
key: function(data) {
return ko.utils.unwrapObservable(data.Id);
}
}
};
// initial setup of self.Results
self.Results = ko.mapping.fromJS({
"response": {
"numFound": 0,
"start": 0,
"maxScore": 0.0,
"docs": []
},
"highlighting": ko.observable({})
}, self.mapping);
// simulation of mapping from JSON/ajax data
ko.mapping.fromJS({
"response": {
"numFound": 9549,
"start": 0,
"maxScore": 0.9960097,
"docs": [
{
"Id": "2-33-200",
"Title": "This is my test title",
}
]
},
"highlighting": {
"2-33-200": {
"Title": [
"This is my <b>test</b> title"
]
}
}
}, self.Results);
}
ko.applyBindings(new MyViewModel());