1.1 --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java Thu Apr 04 13:08:26 2013 +0200
1.2 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java Mon Apr 08 12:36:12 2013 +0200
1.3 @@ -30,6 +30,7 @@
1.4 private final String name;
1.5 private final String[] deps;
1.6 private Knockout model;
1.7 + private Runnable onchange;
1.8
1.9 public KOList(String name, String... deps) {
1.10 this.name = name;
1.11 @@ -39,6 +40,14 @@
1.12 public void assign(Knockout model) {
1.13 this.model = model;
1.14 }
1.15 +
1.16 + public KOList<T> onChange(Runnable r) {
1.17 + if (this.onchange != null) {
1.18 + throw new IllegalStateException();
1.19 + }
1.20 + this.onchange = r;
1.21 + return this;
1.22 + }
1.23
1.24 @Override
1.25 public boolean add(T e) {
1.26 @@ -133,12 +142,15 @@
1.27
1.28 private void notifyChange() {
1.29 Knockout m = model;
1.30 - if (m == null) {
1.31 - return;
1.32 + if (m != null) {
1.33 + m.valueHasMutated(name);
1.34 + for (String dependant : deps) {
1.35 + m.valueHasMutated(dependant);
1.36 + }
1.37 }
1.38 - m.valueHasMutated(name);
1.39 - for (String dependant : deps) {
1.40 - m.valueHasMutated(dependant);
1.41 + Runnable r = onchange;
1.42 + if (r != null) {
1.43 + r.run();
1.44 }
1.45 }
1.46