2013-08-30 46 views
1

我它使用自己的数据属性和绑定提供开发惯例库KO支持写入非观测

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

绑定提供。 建立在一个可以绑定到非observables的绑定处理程序使用ko.expressionRewriting.writeValueToProperty函数(未导出)更新模型。例如value绑定

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

我可以用计算机修复它,但我宁愿像内置的一样。下面是一个小提琴证明内置的版本正在写至非可观察而不计算

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

那么,如何允许写入非可观察到利用writeValueToProperty bindingHandlers?

回答

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