2013-03-24 91 views
0

这里是我的小提琴:敲除映射Observable不被“观察”?

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的可见性不会改变。我认为这是一个范围问题,但我不知道如何解决它。

回答

1

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

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

+0

你是对的,感谢您抽出时间:) – SB2055 2013-03-24 22:15:59