Javascript Breeze导航数组成员是否依赖于淘汰中的可维护?

Javascript Breeze导航数组成员是否依赖于淘汰中的可维护?,javascript,knockout.js,breeze,Javascript,Knockout.js,Breeze,我正在使用RP Niemeyer很久以前发布的clicktoedit绑定处理程序。它非常有效: ko.bindingHandlers.hidden = { update: function(element, valueAccessor) { ko.bindingHandlers.visible.update(element, function() { return !ko.utils.unwrapObservable(valueAccessor()); });

我正在使用RP Niemeyer很久以前发布的clicktoedit绑定处理程序。它非常有效:

ko.bindingHandlers.hidden = {
    update: function(element, valueAccessor) {
        ko.bindingHandlers.visible.update(element, function() { return     !ko.utils.unwrapObservable(valueAccessor()); });
    }        
};

ko.bindingHandlers.clickToEdit = {
    init: function(element, valueAccessor) {
        var observable = valueAccessor(),
            link = document.createElement("a"),
            input = document.createElement("input");

        element.appendChild(link);
        element.appendChild(input);

        observable.editing = ko.observable(false);

        ko.applyBindingsToNode(link, {
            text: observable,
            hidden: observable.editing,
            click: observable.editing.bind(null, true)
        });

        ko.applyBindingsToNode(input, {
            value: observable,
            visible: observable.editing,
            hasfocus: observable.editing,
            event: {
                keyup: function(data, event) {
                //if user hits enter, set editing to false, which makes field lose focus
                    if (event.keyCode === 13) {
                       observable.editing(false);
                       return false;
                    }
                //if user hits escape, push the current observable value back to the field, then set editing to false
                    else if (event.keyCode === 27) {
                       observable.valueHasMutated();
                       observable.editing(false);
                       return false;
                    }

                }
            }
        });
    }
};
我的问题是,转义键不适用于BreezeJS提供的数组中的元素。显然,这些是依赖于可维护的,没有valueHasMutated方法。我通常对这个问题感到困惑 a我如何修改它以适用于依赖微风的观测值?和 b为什么它们是相依的可观察物

任何帮助都将不胜感激


谢谢

Breeze.js已经在处理实体的“撤消”操作,因此您的绑定处理程序有点不必要。如果不知道您是如何使用它的,以及其他什么上下文可能会受到影响,您可以首先检查它是否是Breeze实体,如果不是,则返回到当前实现-

keyup: function(data, event) {
//if user hits enter, set editing to false, which makes field lose focus
    if (event.keyCode === 13) {
       observable.editing(false);
       return false;
    }
//if user hits escape, push the current observable value back to the field, then set editing to false
    else if (event.keyCode === 27) {
       if (observable.entityAspect) {
           observable.entityAspect.cancelChanges();
           observable.editing(false);
           return false;
       } else {
           observable.valueHasMutated();
           observable.editing(false);
           return false;
       }
    }

}

谢谢,普卡。这显然是合乎逻辑的。但是我的DependentObservables似乎没有entityAspect属性。我只有时间对这种方法进行快速测试,所以我没有深入研究细节。当我有机会了解更多信息时,我会告诉你的。