背景
我有一个视图模型和两个模型。对于每种模型,我尝试将name属性绑定到dom。每个名称都有默认值,但是我希望用户能够编辑这些值。遵循淘汰赛文档后,我使用了hasFocus方法。我的问题是单击时可以编辑,但是单击时焦点不会改变,数组也不会更新。看来我的模型editable
属性从未设置回false
。请参阅下面的相应HTML和JS。
那我在做什么错?这是我正在使用的检查表(无济于事)...
确保名称是可观察的。
确保editing
是可观察的。
确保我的edit
函数将editing
设置为true
。
确保editing
默认为false
确保<input>
具有value
绑定。
确保<i>
具有text
绑定。
确保事件处理程序绑定到editing
的值
JSBin:http://jsbin.com/fehoq/117/edit
JS
function StudentModel(fullName) {
var _this = this;
this.fullName = ko.observable(fullName);
this.editing = ko.observable(false);
this.edit = function() {
_this.editing(true);
console.log(_this.editing());
};
...
}
的HTML
<tbody>
<!-- ko foreach: students -->
<tr>
<td>
<input data-bind="value: fullName() + ' ' + ($index() + 1), visible: editing(), hasFocus: editing()"/>
<i data-bind="visible: !editing(), text: fullName() + ' ' + ($index() + 1), click: edit"> </i>
</td>
...
最佳答案
您可能希望将hasFocus
绑定到可观察对象本身,以便可以将假值写回它。因此,您需要:hasFocus: editing
而不是hasFocus: editing()
在后者中,绑定仅接收该值,而无法返回到可观察的值以对其进行写入。
关于javascript - knockout JS:“hasFocus”始终具有焦点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23418229/