|
23 | 23 | var movies = store.load();
|
24 | 24 |
|
25 | 25 | $(function() {
|
26 |
| - $( [ movies ] ).bind("insert remove refresh change", function(event, ui) { |
27 |
| - store.save( movies ); |
28 |
| - $(store).trigger("update"); |
| 26 | + function renderList() { |
| 27 | + list.empty().append( $( "#movie-list-item" ).tmpl( movies ) ); |
| 28 | + } |
| 29 | + function bindChange( items ) { |
| 30 | + $.each( items, function( index, item ) { |
| 31 | + $.observable( item ).bind( "change", function() { |
| 32 | + renderList(); |
| 33 | + }); |
| 34 | + }); |
| 35 | + } |
| 36 | + $.observable( movies ).bind("insert remove replaceAll", function( event, ui ) { |
| 37 | + if ( event.type === "insert" ) { |
| 38 | + bindChange( ui.items ); |
| 39 | + } |
| 40 | + store.save(); |
| 41 | + renderList(); |
29 | 42 | });
|
| 43 | + bindChange( movies ); |
30 | 44 |
|
31 | 45 | $(":submit").button();
|
32 | 46 |
|
33 |
| - var movie; |
34 | 47 | var editForm = $( "#editForm" ).hide().submit( function( event ) {
|
35 | 48 | event.preventDefault();
|
| 49 | + var movie = $( this ).data( "movie" ); |
36 | 50 | $.observable( movie, movies ).property( serializeForm( this ) );
|
37 | 51 | editForm.hide();
|
38 | 52 | });
|
39 | 53 | var list = $("#movies-list").delegate("li:has(li)", "click", function() {
|
40 |
| - movie = $( this ).tmplItem().data; |
| 54 | + var movie = $( this ).tmplItem().data; |
| 55 | + editForm.data( "movie", movie ); |
41 | 56 | deserializeForm( editForm, movie );
|
42 | 57 | editForm.show();
|
43 | 58 | });
|
44 |
| - $(store).bind("update", function() { |
45 |
| - list.empty().append( $("#movie-list-item").tmpl( movies ) ); |
46 |
| - }); |
47 | 59 |
|
48 | 60 | $("#addMovie").click(function() {
|
49 | 61 | $.observable(movies).insert({
|
|
57 | 69 |
|
58 | 70 | $("#editForm").hide();
|
59 | 71 |
|
60 |
| - $(store).trigger("update"); |
| 72 | + renderList(); |
61 | 73 | });
|
62 | 74 | </script>
|
63 | 75 | <style>
|
|
0 commit comments