javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java
branchmodel
changeset 879 af170d42b5b3
parent 532 b5150a06c5d1
child 884 89891834511c
     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) {}