Jak mogę użyć ustawienia knockout.js
, aby ustawić fokus na elemencie utworzonym przez szablon powiązany z tablicą?knockout.js ustawić fokus w szablonie
Mam tablicę obserwowalną powiązaną z tabelą, gdzie każdy wiersz jest zbiorem elementów wejściowych, aby umożliwić edycję właściwości elementu tablicy. Na dole znajduje się przycisk "Add"
, który popycha nowy element do tablicy, tworząc nowy wiersz pól wprowadzania.
Próbuję ustawić ostrość na pierwsze z nowo utworzonych pól wejściowych po naciśnięciu przycisku "Add"
.
HTML:
<html>
<head>
<script src="http://cdn.jsdelivr.net/knockout/3.0.0/knockout.debug.js"></script>
</head>
<body>
<table data-bind='foreach: Attributes'>
<tr>
<td><input type='text' data-bind='value: Name, disable: HardCoded/></td>
<td><input type='text' data-bind='value: Description'/></td>
<td><button data-bind="click: $parent.removeAttribute">Delete</button></td>
</tr>
</table>
<button data-bind="click: addAttribute">Add attribute</button>
</body>
</html>
Javascript:
function Attribute(id, name, description, hardcoded) {
var self=this;
self.AttributeID=ko.observable(id || 0);
self.Name=name || '';
self.Description=description || '';
self.HardCoded=hardcoded || false;
self.nameFocus = true;
}
function AttributeSchema(attributeArray) {
var self=this;
// Properties
self.Attributes=ko.observableArray(attributeArray);
// Operations
self.addAttribute=function() {
self.Attributes.push(new Attribute());
};
self.removeAttribute=function() {
self.Attributes.remove(this);
};
}
var vmSchema=new AttributeSchema(
[
new Attribute(5, 'FirstName', 'First Name', true),
new Attribute(6, 'LastName', 'Last Name', true),
new Attribute(7, 'Blah', 'Blah', false)
]
);
ko.applyBindings(vmSchema);
Dziękuję bardzo, idealna odpowiedź ! Knockout.js rocks! – Richard