JSFiddle - React, Tailwind, and code Playground
by John Allan
JavaScript
viewModel = (function () {
var module;
module = {};
var view = {
'stuff': {
'reblasts': [
{
'guid': '1',
'liked': true
},
{
'guid': '2',
'liked': false
}
]
}
};
module.getReblast = function (index) {
return view.stuff.reblasts[index];
};
module.updateArticle = function (path, matchProperty, update) {
var node, i, l;
function getNode(obj, path) {
var node, pathArray;
pathArray = path.split('.');
shift = pathArray.shift();
console.log(shift);
if (pathArray.length > 0) {
console.log('deeper');
obj = obj[shift];
node = getNode(obj, pathArray.join('.'));
} else {
console.log('done', obj, obj[shift]);
node = obj[shift];
}
return node;
}
node = getNode(view, path);
for (i = 0, l = node.length; i < l; i++) {
if (node[i][matchProperty] === update[matchProperty]) {
node[i] = update;
break;
}
}
};
return module;
}());
console.log(viewModel.getReblast(0).liked);
viewModel.updateArticle('stuff.reblasts', 'guid', {
'guid': '1',
'liked': false
});
console.log(viewModel.getReblast(0).liked);