ノックアウトビューモデルに次のような配列があります。
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"
},
]},
]);
このコードを使用して、新しい要素を追加します。
this.Activities.push(new NewActivity(company, description, length, fullDate));
NewActivity関数を使用するもの:
function NewActivity(company, description, length, date) {
this.date = date;
this.activities = [{ "company": company, "description": description, "length": length }];
}
そしてそれはうまくいきます。ただし、リリースされるたびにまったく新しいオブジェクトが作成されます。コードがすでに作成されたオブジェクトの日付をチェックする条件を実装する必要があります。新しく作成されたオブジェクトの日付が同じである場合は、その日付のアクティビティ配列内のアクティビティ配列にアクティビティの詳細を追加する必要があります。
どうすればいいですか?
Activities配列のすべてのデータは、MVCアプリケーションの強く型付けされたビューのモデルから取得されます。
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"
@:},
}
@:]},
}
]);