0

这是我的小提琴:

http://jsfiddle.net/PTSkR/8/

如果单击文本,我正在尝试使侧面可编辑。我正在从淘汰赛网站关注这个例子:

看法:

<p>
    Name: 
    <b data-bind="visible: !editing(), text: name, click: edit">&nbsp;</b>
    <input data-bind="visible: editing, value: name, hasfocus: editing" />
</p>
<p><em>Click the name to edit it; click elsewhere to apply changes.</em></p>

脚本:

function PersonViewModel(name) {
    // Data
    this.name = ko.observable(name);
    this.editing = ko.observable(false);

    // Behaviors
    this.edit = function() { this.editing(true) }
}

ko.applyBindings(new PersonViewModel("Bert Bertington"));

http://knockoutjs.com/documentation/hasfocus-binding.html

当我点击“边”的文本时,我点击了“编辑”功能,但 div 的可见性并没有改变。我认为这是一个范围界定问题,但我不知道如何解决它。

4

1 回答 1

1

问题是hasfocus绑定也与editable可观察对象相关联。删除此绑定会导致可见性更新得很好。我猜这意味着 Knockout 试图设置焦点并失败,因此设置editable回 false。

也许您可以不使用该绑定,而是将blur事件处理程序附加到输入,在该处理程序中您将设置editable为 false。

于 2013-03-24T22:14:54.197 回答