1

我正在为 KO 开发一个会议库

https://github.com/AndersMalmgren/Knockout.BindingConventions

它使用自己的数据属性和绑定提供程序。内置的一种方式可以一种方式绑定到非可观察对象,以便 bindingHandlers 使用ko.expressionRewriting.writeValueToProperty函数更新模型(它未导出)。例如value绑定

问题是我无法弄清楚内置绑定提供程序如何实现这一点,因为我迷失在所有字符串 eval 代码中。

我可以用计算来修复它,但我宁愿像内置的那样做。这是一个小提琴,证明内置版本可以在没有计算的情况下写入非可观察对象

http://jsfiddle.net/xffPk/1/

那么,如何将非可观察对象写入使用 writeValueToProperty 的 bindingHandlers?

4

1 回答 1

0

我这样解决了

var applyMemberWriter = function(bindings, bindingName, accessor, memberName, context) {
    if(!ko.isObservable(accessor)) {
        bindings._ko_property_writers = bindings._ko_property_writers || {};

        bindings._ko_property_writers[bindingName] = function(value) {
            context[memberName] = value;
        };
    }
};

这需要调用以在无可观察对象上应用两种方式绑定,完整源 https://github.com/AndersMalmgren/Knockout.BindingConventions/commit/7d8e7cdf0ddced5b39f10c1b374bcd5254cc0a58

以上是针对 KO 2.x

对于 KO 3.x

https://github.com/AndersMalmgren/Knockout.BindingConventions/commit/78983119c1e5fb70c637e4ffc1b692d2b4c74dc7

于 2013-10-07T20:28:33.400 回答