1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Tue Jan 22 21:59:13 2013 +0100
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Mon Mar 25 11:50:36 2013 +0100
1.3 @@ -29,12 +29,13 @@
1.4 public class Knockout {
1.5 /** used by tests */
1.6 static Knockout next;
1.7 -
1.8 +
1.9 Knockout() {
1.10 }
1.11
1.12 public static <M> Knockout applyBindings(
1.13 - Class<M> modelClass, M model, String[] propsGettersAndSetters
1.14 + Class<M> modelClass, M model, String[] propsGettersAndSetters,
1.15 + String[] methodsAndSignatures
1.16 ) {
1.17 Knockout bindings = next;
1.18 next = null;
1.19 @@ -53,6 +54,11 @@
1.20 throw new IllegalStateException(ex.getMessage());
1.21 }
1.22 }
1.23 + for (int i = 0; i < methodsAndSignatures.length; i += 2) {
1.24 + expose(
1.25 + bindings, model, methodsAndSignatures[i], methodsAndSignatures[i + 1]
1.26 + );
1.27 + }
1.28 applyBindings(bindings);
1.29 return bindings;
1.30 }
1.31 @@ -87,6 +93,14 @@
1.32 Object bindings, Object model, String prop, String getter, String setter, boolean primitive
1.33 ) {
1.34 }
1.35 +
1.36 + @JavaScriptBody(args = { "bindings", "model", "prop", "sig" }, body =
1.37 + "bindings[prop] = function(data, ev) { model[sig](data, ev); };"
1.38 + )
1.39 + private static void expose(
1.40 + Object bindings, Object model, String prop, String sig
1.41 + ) {
1.42 + }
1.43
1.44 @JavaScriptBody(args = { "bindings" }, body = "ko.applyBindings(bindings);")
1.45 private static void applyBindings(Object bindings) {}