0
頁面正確顯示顧問的原始列表。但是,當我嘗試在數組中使用push()方法時,列表大小會更新,但頁面上的選擇選項列表不會更新。我需要告訴淘汰賽更新什麼嗎?下面是一些示例代碼:knockout.js選項綁定不反映添加項目
function updateStudentAdviserList(student) {
var list = viewModel.studentAdvisers();
if (student.IsStudentAdviser() == "true" || student.IsStudentAdviser() == true) {
var alreadyInList = false;
for (var i = 0; i < list.length; i++) {
alert(list[i].Id);
if (list[i].Id == student.Id()) {
return;
}
}
list.push(student);
alert('new size: ' + list.length);
} else {
for (var i = 0; i < list.length; i++) {
alert(list[i].Id);
if (list[i].Id == student.Id()) {
list.splice(i, 1);
alert('new size: ' + list.length);
break;
}
}
}
}
function ViewModel(data) {
var self = this;
this.studentAdvisers = ko.observableArray(data);
}
這絕對奏效!謝謝!爲什麼我必須這樣做? –
因爲當你調用這個:var list = viewModel.studentAdvisers();你得到js數組,敲除不知道它會發生什麼。爲了避免callig valueHasMutated,你應該直接從viewModel.studentAdvisers調用push函數 - viewModel.studentAdvisers.push(NewValue) –
我試過了,沒有將它設置爲變量「list」,它仍然需要valueHasMutated()。 –