我正在为KO开发一个约定库
https://github.com/AndersMalmgren/Knockout.BindingConventions
它使用自己的数据属性和绑定提供程序。
内置的一个可以单向绑定到不可观察的bindingHandlers,使用ko.expressionRewriting.writeValueToProperty
函数更新模型(未导出)。例如value
绑定
问题是我无法弄清楚内置绑定提供程序如何启用它,因为我迷失在所有字符串eval代码中。
我可以使用计算机修复它,但我宁愿像内置的那样修复它。这是一个小提琴,证明内置版本正在写入不带计算的
的非可观察量那么如何使用writeValueToProperty启用对不可观察对象的写入?
答案 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