diff -r e8916518b38d -r 445d5f1d4177 javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java --- a/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java Thu Apr 04 13:08:26 2013 +0200 +++ b/javaquery/api/src/main/java/org/apidesign/bck2brwsr/htmlpage/KOList.java Mon Apr 08 12:36:12 2013 +0200 @@ -30,6 +30,7 @@ private final String name; private final String[] deps; private Knockout model; + private Runnable onchange; public KOList(String name, String... deps) { this.name = name; @@ -39,6 +40,14 @@ public void assign(Knockout model) { this.model = model; } + + public KOList onChange(Runnable r) { + if (this.onchange != null) { + throw new IllegalStateException(); + } + this.onchange = r; + return this; + } @Override public boolean add(T e) { @@ -133,12 +142,15 @@ private void notifyChange() { Knockout m = model; - if (m == null) { - return; + if (m != null) { + m.valueHasMutated(name); + for (String dependant : deps) { + m.valueHasMutated(dependant); + } } - m.valueHasMutated(name); - for (String dependant : deps) { - m.valueHasMutated(dependant); + Runnable r = onchange; + if (r != null) { + r.run(); } }