支持写入不可观察的绑定提供者

时间:2013-08-30 15:31:10

标签: knockout.js knockout-2.0

我正在为KO开发一个约定库

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

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

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

我可以使用计算机修复它,但我宁愿像内置的那样修复它。这是一个小提琴,证明内置版本正在写入不带计算的

的非可观察量

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

那么如何使用writeValueToProperty启用对不可观察对象的写入?

1 个答案:

答案 0 :(得分: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