I have an array in Knockout view model which looks like so:
this.Activities = ko.observableArray([
{ "date": "28/11/2012 00:00:00",
"activities": [
{ "company": "BOW",
"description": "Backup Checks",
"length": "60"
},
{ "company": "AMS",
"description": "Data Request",
"length": "135"
},
]},
{ "date": "30/11/2012 00:00:00",
"activities": [
{ "company": "BOW",
"description": "Backup Checks",
"length": "60"
},
{ "company": "SLGT",
"description": "Software Development",
"length": "240"
},
{ "company": "BOW",
"description": "Data Request",
"length": "30"
},
]},
]);
I use this code to add a new element to it:
this.Activities.push(new NewActivity(company, description, length, fullDate));
Which uses NewActivity function:
function NewActivity(company, description, length, date) {
this.date = date;
this.activities = [{ "company": company, "description": description, "length": length }];
}
And it works fine. However, it creates an entirely new object every time it is getting released. I need to implement a condition when the code would check for the date of the objects already created. If the newly created object had the same date, activity details should be added to activities array within the Activities array for that date.
How can I do it?
All of the data for the Activities array comes from the model in the strongly typed view in MVC application:
this.Activities = ko.observableArray([
@foreach (ActivitySet aSet in Model)
{
@:{ "date": "@aSet.Date",
@:"activities": [
foreach(Activity a in aSet.Activities)
{
@:{ "company": "@a.Companies.Select(c => c.Title).Single()",
@:"description": "@a.Descriptions.Select(c => c.Title).Single()",
@:"length": "@a.LengthInMinutes"
@:},
}
@:]},
}
]);