2013-08-30 29 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