【发布时间】:2014-05-01 23:10:41
【问题描述】:
背景
我有一个单视图模型和两个模型。对于每个模型,我都在尝试将 name 属性绑定到 dom。每个名称都有默认值,但我希望用户能够编辑这些值。在 Knockout 文档之后,我使用了 hasFocus 方法。我的问题是,点击时,我可以编辑,但是当我点击出去时,焦点不会改变,我的数组也不会更新。看起来我的模型editable 属性永远不会设置回false。见下面对应的 HTML 和 JS。
那我做错了什么?这是我用于故障排除的清单(无济于事)...
- 确保名称是可观察的。
- 确保
editing是可观察的。 - 确保我的
edit函数将editing设置为true。 - 确保
editing默认为false - 确保
<input>具有value绑定。 - 确保
<i>具有text绑定。 - 确保事件处理程序绑定到
editing的值
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>
...
【问题讨论】:
标签: javascript html knockout.js ko.observablearray