在KO 3.0.0.beta(和我幾乎可以肯定這會是相同的2.3)我想新行添加到動態創建的表:焦點輸入動態添加到observableArray在淘汰賽
HTML
<div id="root">
<table>
<tbody data-bind="foreach: events">
<tr>
<td>
<input type="text" data-type="name" data-bind="value: name, css: {hidden: !editing()}, hasFocus: true">
</td>
<td>
<input type="text" data-type="method" data-bind="value: age, css: {hidden: !editing()}">
</td>
</tr>
</tbody>
</table>
</div>
的JavaScript
var $root = $('#root');
$root.on('blur', 'table input', function(event) {
var data = ko.dataFor(event.target),
context = ko.contextFor(event.target),
$input = $(event.target),
newData;
data.editing(false);
if($input.closest('td').is(':last-child') && $input.closest('tr').is(':last-child')) {
newData = {
name: '',
age: '',
editing: ko.observable(false)
};
context.$root.events.push(newData);
newData.editing(true);
}
});
var data = {
events: [
{name: 'aaa', age: '22', editing: false},
{name: 'bbb', age: '33', editing: false},
{name: 'ccc', age: '44', editing: false}
]
};
var mapping = {
events: {
key: function(data) {
return ko.unwrap(data.name);
}
}
};
var observable = ko.mapping.fromJS(data, mapping);
ko.applyBindings(observable, $root[0]);
and it 差不多的作品。
我成功地創建了行 - 這是siple部分,但對於我的生活,我無法使創建的raw中的第一個輸入被聚焦。
任何想法(和我經歷了很多建議,其中沒有任何工作在上述設置)?
你在混合jQuery和KO,它註定要失敗。添加可觀察的isFocused,將其與hasFocus綁定綁定 – Anders
Second @Anders。你應該把它變成一個答案。這可能不是OP的結果,但它是解決實際問題的最簡單方法,此外:其他人也可能會發現它有幫助。 – Jeroen
@Anders jquery用於事件綁定。完全正交。我接受建議,所以請做出這個答案。我試着用isFocused。無法讓它工作。 – ZenMaster