Object property value checking
In this case I am going to iterate the object property value checking and append the value to new array.
by Udhay
HTML
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<ul data-bind="foreach: myArray">
<li data-bind="text: $data"></li>
</ul>
<div data-bind="text: isValid() ? 'Succes' : 'fail'">
</div>
JavaScript
var viewModel = function(){ var responseJson = [{
code: 'u01a1',
title: 'Assessment title 001',
activityText: 'Missing Activity Text',
criterionText: 'Missing Criteria Text',
criteriaExternalId: 'External Id missing',
performanceLvel: 'Perfromance level is missing',
isActivityValid: true,
competencyAligned: 'Sucess'
},
{
code: 'u02a2',
title: 'Assessment title 002',
activityText: 'Missing Activity Text',
criterionText: 'Missing Criteria Text',
criteriaExternalId: 'External Id missing',
performanceLvel: 'Perfromance level is missing',
isActivityValid: true,
competencyAligned: 'Sucess'
},
{
code: 'u03a3',
title: 'Assessment title 003',
activityText: 'Missing Activity Text',
criterionText: 'Missing Criteria Text',
criteriaExternalId: 'External Id missing',
performanceLvel: 'Perfromance level is missing',
isActivityValid: true,
competencyAligned: 'Sucess'
},
{
code: 'u04a4',
title: 'Assessment title 004',
activityText: 'Missing Activity Text',
criterionText: 'Missing Criteria Text',
criteriaExternalId: 'External Id missing',
performanceLvel: 'Perfromance level is missing',
isActivityValid: true,
competencyAligned: 'Sucess'
}
];
this.myArray = ko.observableArray();
this.isValid = ko.observable(false);
var errorLists = [];
var collection = [];
responseJson.forEach(function(errorList) {
errorLists = [];
Object.keys(errorList).forEach(function(key) {
var val = errorList[key];
var keyValue = key;
if (val != "Sucess") {
errorLists.push('missing' + val);
}
});
collection.push(errorLists);
console.log(collection);
self.myArray.push.apply(self.myArray, collection);
return;
});
this.isValid(this.myArray().length > 0 ? true : false )
}
ko.applyBindings(viewModel);