是否有可能获得财产的相关输入?将模型添加到数组后,我需要关注输入:
var newItem = new ChildModel();
this.childItems.push(newItem);
// and then something like this:
newItem.observableProperty.focusInput();
答案 0 :(得分:1)
您可以查看hasfocus
绑定。如果您愿意为selected
添加ChildModel
属性,可以执行以下操作:http://jsfiddle.net/jearles/sZnbU/
当我将项目推入可观察数组时,我将其selected
属性设置为true
。这使它成为焦点。每行还有一个Select
按钮,您可以选择它。
当我添加新项目时,我会记录这些项目,以便您可以看到selected
属性发生变化。最后,如果您单击输入文本框,将其置于焦点,然后单击Log
,您将看不到“已选择”的项目。
-
<span>
New Item: <input data-bind="value:newItem" />
<button data-bind="click: addItem">Add</button>
<button data-bind="click: logItems">Log</button>
</span>
<div data-bind="foreach: items">
<p>
<input data-bind="value: text, hasfocus: selected" />
<button data-bind="click: selectItem">Select</button>
</p>
</div>
-
var ChildItem = function(text) {
var self = this;
self.text = ko.observable(text);
self.selected = ko.observable(true);
self.selectItem = function() {
self.selected(true);
}
};
var ViewModel = function() {
var self = this;
self.items = ko.observableArray();
self.newItem = ko.observable('');
self.addItem = function() {
if (self.newItem().length > 0) {
self.items.push(new ChildItem(self.newItem()));
self.newItem('');
self.logItems();
}
};
self.logItems = function() {
console.log(ko.toJSON(self.items));
}
}
ko.applyBindings(new ViewModel());