1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Sun Jan 20 21:01:10 2013 +0100
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/Knockout.java Sun Jan 20 21:01:46 2013 +0100
1.3 @@ -26,15 +26,13 @@
1.4 */
1.5 @ExtraJavaScript(resource = "org/apidesign/bck2brwsr/htmlpage/knockout-2.2.1.js")
1.6 public final class Knockout {
1.7 -
1.8 -
1.9 private Knockout() {
1.10 }
1.11
1.12 - public static <M> void applyBindings(
1.13 + public static <M> Knockout applyBindings(
1.14 Class<M> modelClass, M model, String[] propsGettersAndSetters
1.15 ) {
1.16 - Object bindings = new Object();
1.17 + Knockout bindings = new Knockout();
1.18 for (int i = 0; i < propsGettersAndSetters.length; i += 3) {
1.19 bind(bindings, model, propsGettersAndSetters[i],
1.20 propsGettersAndSetters[i + 1],
1.21 @@ -42,6 +40,13 @@
1.22 );
1.23 }
1.24 applyBindings(bindings);
1.25 + return bindings;
1.26 + }
1.27 +
1.28 + @JavaScriptBody(args = { "prop" }, body =
1.29 + "this[prop].valueHasMutated();"
1.30 + )
1.31 + public void valueHasMutated(String prop) {
1.32 }
1.33
1.34 @JavaScriptBody(args = { "bindings", "model", "prop", "getter", "setter" }, body =
2.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Sun Jan 20 21:01:10 2013 +0100
2.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/PageProcessor.java Sun Jan 20 21:01:46 2013 +0100
2.3 @@ -108,9 +108,10 @@
2.4 List<String> propsGetSet = new ArrayList<String>();
2.5 generateProperties(w, p.properties(), propsGetSet);
2.6 generateComputedProperties(w, e.getEnclosedElements(), propsGetSet);
2.7 + w.append(" private static org.apidesign.bck2brwsr.htmlpage.Knockout ko;\n");
2.8 if (!propsGetSet.isEmpty()) {
2.9 w.write("public static void applyBindings() {\n");
2.10 - w.write(" org.apidesign.bck2brwsr.htmlpage.Knockout.applyBindings(");
2.11 + w.write(" ko = org.apidesign.bck2brwsr.htmlpage.Knockout.applyBindings(");
2.12 w.write(className + ".class, new " + className + "(), ");
2.13 w.write("new String[] {\n");
2.14 String sep = "";
2.15 @@ -270,6 +271,7 @@
2.16 w.write("}\n");
2.17 w.write("public static void " + gs[1] + "(" + tn + " v) {\n");
2.18 w.write(" prop_" + p.name() + " = v;\n");
2.19 + w.write(" if (ko != null) ko.valueHasMutated(\"" + p.name() + "\");\n");
2.20 w.write("}\n");
2.21
2.22 props.add(p.name());