knockout.js单击以编辑,don';t重新打开模糊

knockout.js单击以编辑,don';t重新打开模糊,knockout.js,Knockout.js,我对knockoutJS还相当陌生,不知道如何使用hasfocus绑定来允许我“点击编辑”,但需要一个按钮来保存 我已经设置了我的代码(基于RP Niemeyer的两个不可思议的小提琴),这样当我点击标签时,我会得到一个编辑输入框(正如预期的那样)。问题在于使用hasfocus绑定 这是我的“clickToEdit”绑定(除了添加了accept和cancel图标外,与下面提到的第二把小提琴几乎相同): 我希望输入框在可见时立即聚焦,但我不希望它在模糊上隐藏。我想使用受保护的可观察对象(再次感谢R

我对knockoutJS还相当陌生,不知道如何使用hasfocus绑定来允许我“点击编辑”,但需要一个按钮来保存

我已经设置了我的代码(基于RP Niemeyer的两个不可思议的小提琴),这样当我点击标签时,我会得到一个编辑输入框(正如预期的那样)。问题在于使用hasfocus绑定

这是我的“clickToEdit”绑定(除了添加了accept和cancel图标外,与下面提到的第二把小提琴几乎相同):

我希望输入框在可见时立即聚焦,但我不希望它在模糊上隐藏。我想使用受保护的可观察对象(再次感谢RP)在编辑时使用保存/取消


如果此提琴有更新:单击编辑按钮时会聚焦第一个字段,或者此提琴有更新:如果未聚焦输入框不会导致其消失,我可能会从那里获取它。

一种方法是在名称字段中添加一个
聚焦的
子可观察项,对其绑定
hasfocus
,并在选择项目时将其设置为true

因此,一个项目看起来像:

var Item = function(name, quantity) {
    this.name = ko.protectedObservable(name);
    this.name.focused = ko.observable();
    this.quantity = ko.protectedObservable(quantity);
};
在选择项目时,您将执行以下操作:

this.editItem = function(item) {
    self.selectedItem(item);
    item.name.focused(true);
};
以下是一个示例:


您甚至可以避免子可观察项,只需在输入上放置一个
hasfocus:true
,当使用“编辑”模板时,它将成为焦点,但我可能会像上面的示例中那样更明确一些。

哇,谢谢您。我不太清楚为什么我不能让它像这样工作,但我非常感谢你的帮助。如果不太麻烦的话,您能否建议如何将其包装在clickToEdit绑定中?我已经找到了如何通过更多的文档阅读和大量的尝试和错误将两者结合起来。接受这个答案,非常感谢!
this.editItem = function(item) {
    self.selectedItem(item);
    item.name.focused(true);
};