Это не так тривиальная задача, как может показаться.
Сначала наблюдаемый массив обрабатывает только модификацию массива (вставка, удаление, изменение порядка и т. Д.), А не модификацию элемента.
Во-вторых, вам, вероятно, понадобится специальный флаг, например, isModified, который привязывается к каждой строке таблицы.
Тогда вам нужно установить этот флаг, если часть привязки была обновлена. Knockoutjs observables предоставляет метод подписки, который позволяет вызывать вашу собственную функцию при обновлении observables.
Взгляните на страницу http://knockoutjs.com/documentation/observables.html, внизу есть раздел, который называется «явная подписка на наблюдаемые».
Существует быстрый набросок кода, который выполняет эту задачу
function CreateArrayElementViewModel(inputData) {
// Creating our view model
var result = {
prop : ko.observable(inputData.prop),
val : ko.observable(inputData.val),
isModified: false // This property would be true if entity was edited
};
// Iterate over all properties and subscribe to knockoutjs observables
for(prop in result) {
if (typeof(result[prop].subscribe) != 'undefined') {
result[prop].subscribe(function() { result.isModified = true; });
}
}
return result;
}