検索したデータでデータバインド Ul-Li リストの内容を更新したいと考えています。次のViewModelを使用しています
function PatientsModel(data)
{
var self = this;
self.Patients = ko.observableArray([]);
self.Patients(data.Patients);
self.addPatient = function (model, event)
{
alert("Patients to Add: " + model.LastName + ',' + model.FirstName);
//Replace with AJAX Calls : self.people.push({ name: "New at " + new Date() });
};
self.removePatient = function (model, event)
{
alert("Patients to Delete:" + model.LastName + ',' + model.FirstName);
//Replace with AJAX calls : self.people.remove(this);
}
self.RefreshData = function (data)
{
self.Patients = ko.observableArray([]);
self.Patients(data.Patients);
}
}
私が作成したコンテンツを更新するには、RefreshData、データバインド された患者を更新するメソッド「foreach:患者」をUlで更新します
私は次のバインドを行っています:
AllPatientList.PatientsModel = null;
AllPatientList.PatientsModel = new PatientsModel(data);
ko.applyBindings(AllPatientList.PatientsModel, $('#AllPatientDiv>div>ul')[0]);
View Model のコンテンツを更新するには、次のようにします。
if (AllPatientList.PatientsModel != null && AllPatientList.PatientsModel != undefined)
{
AllPatientList.PatientsModel.RefreshData(data);
}
else
{
AllPatientList.PatientsModel = new PatientsModel(data);
ko.applyBindings(AllPatientList.PatientsModel, $('#AllPatientDiv>div>ul')[0]);
}
しかし、それは機能せず、UL の内容は変更されていません。
さらに私は次のことを試みました:
ko.cleanNode($('#AllPatientDiv>div>ul')[0]);
AllPatientList.PatientsModel = new PatientsModel(data);
ko.applyBindings(AllPatientList.PatientsModel, $('#AllPatientDiv>div>ul')[0]);
Repeated/Duplicate dataEntries を使用してリストを作成しています。3 つではなく 9 つのリスト項目が表示されています (それぞれが 3 回繰り返されます)。
ここで何が間違っているのかわかりません。ko.cleanNode() もリストからコンテンツを削除していません。更新された内容で UL - LI リストを再バインドする方法を教えてください。