Enough to set the back reference once per object, not once per its property.
1.1 --- a/ko-fx/src/main/java/org/apidesign/html/kofx/FXContext.java Sat Aug 31 00:39:39 2013 +0000
1.2 +++ b/ko-fx/src/main/java/org/apidesign/html/kofx/FXContext.java Sat Aug 31 01:29:13 2013 +0000
1.3 @@ -79,7 +79,9 @@
1.4
1.5 @Override
1.6 public JSObject wrapModel(Object model) {
1.7 - return (JSObject) Knockout.createBinding(model).koData();
1.8 + JSObject obj = (JSObject) Knockout.createBinding(model).koData();
1.9 + obj.setMember("ko-fx.model", model);
1.10 + return obj;
1.11 }
1.12
1.13 @Override
2.1 --- a/ko-fx/src/main/java/org/apidesign/html/kofx/Knockout.java Sat Aug 31 00:39:39 2013 +0000
2.2 +++ b/ko-fx/src/main/java/org/apidesign/html/kofx/Knockout.java Sat Aug 31 01:29:13 2013 +0000
2.3 @@ -89,7 +89,6 @@
2.4 try {
2.5 InvokeJS.bind(bindings, pb, prop, "getValue", pb.isReadOnly() ? null : "setValue", primitive, array);
2.6
2.7 - ((JSObject)bindings).setMember("ko-fx.model", model);
2.8 LOG.log(Level.FINE, "binding defined for {0}: {1}", new Object[]{prop, ((JSObject)bindings).getMember(prop)});
2.9 } catch (Throwable ex) {
2.10 LOG.log(Level.WARNING, "binding failed for {0} on {1}", new Object[]{prop, bindings});