1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Mon Apr 15 07:08:55 2013 +0200
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Mon Apr 15 18:30:30 2013 +0200
1.3 @@ -82,9 +82,18 @@
1.4 + " ret.toString = function() { return 'KObject' + cnt + ' value: ' + value + ' props: ' + Object.keys(this); };"
1.5 + " return ret;"
1.6 + " };"
1.7 +
1.8 + " scope.KObject.array= function() {"
1.9 + " return Array.prototype.slice.call(arguments);"
1.10 + " };"
1.11 +
1.12 + + " scope.KObject.expose = function(bindings, model, prop, sig) {"
1.13 + + " bindings[prop] = function(data, ev) {"
1.14 + + " console.log(\" callback on prop: \" + prop);"
1.15 + + " model[sig](data, ev);"
1.16 + + " };"
1.17 + + " };"
1.18 +
1.19 + "})(window); window.KObject"
1.20 );
1.21 }
1.22 @@ -186,6 +195,8 @@
1.23 try {
1.24 KOProperty kop = new KOProperty(model, strip(getter), strip(setter));
1.25 bnd.call("bnd", ko, bindings, kop, prop, "get", "set", primitive, array);
1.26 +
1.27 + ((JSObject)bindings).setMember("koModel", model);
1.28 LOG.log(Level.INFO, "binding defined for {0}: {1}", new Object[]{prop, ((JSObject)bindings).getMember(prop)});
1.29 } catch (Throwable ex) {
1.30 LOG.log(Level.INFO, "binding failed for {0} on {1}", new Object[]{prop, bindings});
1.31 @@ -205,6 +216,12 @@
1.32 private static void expose(
1.33 Object bindings, Object model, String prop, String sig
1.34 ) {
1.35 + try {
1.36 + KOFunction f = new KOFunction(model, strip(sig));
1.37 + KObject.call("expose", bindings, f, prop, "call");
1.38 + } catch (Throwable ex) {
1.39 + LOG.log(Level.SEVERE, "Cannot define binding for " + prop + " in model " + model, ex);
1.40 + }
1.41 }
1.42
1.43 @JavaScriptBody(args = { "bindings" }, body = "ko.applyBindings(bindings);")