【问题标题】:Knockout Mapping Observable not being "observed"?Knockout Mapping Observable 没有被“观察到”?
【发布时间】:2013-03-14 06:44:37
【问题描述】:

这是我的小提琴:

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

【问题讨论】:

    标签: javascript mvvm knockout.js


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-22
      • 1970-01-01
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多