Проблема заключается в создании новой строки, которая ограничивает наблюдаемую величину до hasFocus
:
<input data-bind="uniqueName: true,
visible: $parent.editing,
value: firstName,
hasFocus: $parent.editing" /> <-- the problem cause
При создании строки ранее сфокусированная строка *1006* теряет фокус, что приводит к editing
устанавливается на false
.
Таким образом, решение будет состоять в том, чтобы просто использовать наблюдаемое значение (вместо того, чтобы ограничивать само наблюдаемое):
<input data-bind="uniqueName: true,
visible: $parent.editing,
value: firstName,
hasFocus: $parent.editing()" /> // <-- call the observable
Но еще лучше добавить наблюдаемое в Item
модель представления, называется isFocused
, и используйте его вместо:
var Item = function (fname, lname, address) {
var self = this;
self.isFocused = ko.observable(true);
// ... other observables ...
};
<input data-bind="uniqueName: true,
visible: isFocused(),
value: firstName,
hasFocus: isFocused" />