diff -r b5150a06c5d1 -r af170d42b5b3 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Tue Jan 22 21:59:13 2013 +0100 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Mon Mar 25 11:50:36 2013 +0100 @@ -29,12 +29,13 @@ public class Knockout { /** used by tests */ static Knockout next; - + Knockout() { } public static Knockout applyBindings( - Class modelClass, M model, String[] propsGettersAndSetters + Class modelClass, M model, String[] propsGettersAndSetters, + String[] methodsAndSignatures ) { Knockout bindings = next; next = null; @@ -53,6 +54,11 @@ throw new IllegalStateException(ex.getMessage()); } } + for (int i = 0; i < methodsAndSignatures.length; i += 2) { + expose( + bindings, model, methodsAndSignatures[i], methodsAndSignatures[i + 1] + ); + } applyBindings(bindings); return bindings; } @@ -87,6 +93,14 @@ Object bindings, Object model, String prop, String getter, String setter, boolean primitive ) { } + + @JavaScriptBody(args = { "bindings", "model", "prop", "sig" }, body = + "bindings[prop] = function(data, ev) { model[sig](data, ev); };" + ) + private static void expose( + Object bindings, Object model, String prop, String sig + ) { + } @JavaScriptBody(args = { "bindings" }, body = "ko.applyBindings(bindings);") private static void applyBindings(Object bindings) {}