Skip to content

Commit

Permalink
Fix zombie views in the mobile UI.
Browse files Browse the repository at this point in the history
- close views when switching;
- ensure that all render() methods return the view (so that they can be chained)
  • Loading branch information
mbogoevici committed Jun 2, 2012
1 parent 500ceb4 commit c441a83
Show file tree
Hide file tree
Showing 13 changed files with 27 additions and 15 deletions.
10 changes: 6 additions & 4 deletions demo/src/main/webapp/resources/js/app/router/mobile/router.js
Expand Up @@ -87,15 +87,16 @@ define("router",[
var eventsView = new EventsView({model:events, el:$("#container")});
events.bind("reset",
function () {
eventsView.render();
var view = eventsView.render();
utilities.viewManager.showView(view);
}).fetch();
},
venues:function () {
var venues = new Venues;
var venuesView = new VenuesView({model:venues, el:$("#container")});
venues.bind("reset",
function () {
venuesView.render();
utilities.viewManager.showView(venuesView.render());
}).fetch();
},
about:function () {
Expand All @@ -121,7 +122,8 @@ define("router",[
var eventDetailView = new EventDetailView({model:model, el:$("#container")});
model.bind("change",
function () {
eventDetailView.render();
var view = eventDetailView.render();
utilities.viewManager.showView(view);
$.mobile.changePage($("#container"), {transition:'slide', changeHash:false});
}).fetch();
},
Expand All @@ -130,7 +132,7 @@ define("router",[
var venueDetailView = new VenueDetailView({model:model, el:$("#container")});
model.bind("change",
function () {
venueDetailView.render();
utilities.viewManager.showView(venueDetailView.render());
$.mobile.changePage($("#container"), {transition:'slide', changeHash:false});
}).fetch();
},
Expand Down
Expand Up @@ -12,6 +12,7 @@ define([
},
render:function () {
utilities.applyTemplate($(this.el), bookingTableTemplate, {model:this.model});
return this;
},
deleteBooking:function (event) {
var id = $(event.currentTarget).data("tm-id");
Expand Down
Expand Up @@ -93,6 +93,7 @@ define([
self.ticketSummaryView.render();
$("#sectionSelector").change();
});
return this;
},
refreshPrices:function (event) {
var ticketPrices = _.filter(this.show.ticketPrices, function (item) {
Expand Down
Expand Up @@ -40,6 +40,7 @@ define([
});
$("#venueSelector").removeAttr('disabled')
})
return this;
},
beginBooking:function () {
require("router").navigate('/book/' + $("#venueSelector option:selected").val() + '/' + $("#performanceTimes").val(), true)
Expand Down
Expand Up @@ -22,7 +22,7 @@ define([
$(this.el).find('.item:first').addClass('active');
$(".collapse").collapse()
$("a[rel='popover']").popover({trigger:'hover'});
return this
return this;
},
update:function () {
$("a[rel='popover']").popover('hide')
Expand Down
Expand Up @@ -10,6 +10,7 @@ define([
var HomeView = Backbone.View.extend({
render:function () {
utilities.applyTemplate($(this.el),HomeTemplate,{});
return this;
}
});

Expand Down
Expand Up @@ -37,7 +37,8 @@ define([
$("#eventSelector").append("<option value='" + show.id + "'>" + show.event.name + "</option>")
})
$("#eventSelector").removeAttr('disabled')
})
});
return this;
},
beginBooking:function () {
require("router").navigate('/book/' + $("#eventSelector option:selected").val() + '/' + $("#performanceTimes").val(), true)
Expand Down
Expand Up @@ -20,7 +20,7 @@ define([
$(this.el).find('.item:first').addClass('active');
$(".collapse").collapse();
$("a[rel='popover']").popover({trigger:'hover'});
return this
return this;
},
update:function () {
$("a[rel='popover']").popover('hide')
Expand Down
Expand Up @@ -6,6 +6,7 @@ define([
render:function () {
$(this.el).empty().append("<section><h1>Welcome to Ticket Monster!</h1>" +
"Ticket Monster is a demo application</section>");
return this;
}
});

Expand Down
Expand Up @@ -40,6 +40,7 @@ define(['backbone',
$("#performanceTimes").empty();
$("#performanceTimes").selectmenu('disable');
$(this.el).trigger('pagecreate');
return this;
},
performanceSelected:function () {
if ($("#performanceTimes").val() != 'Choose a show time ...') {
Expand Down
3 changes: 2 additions & 1 deletion demo/src/main/webapp/resources/js/app/views/mobile/events.js
Expand Up @@ -16,7 +16,8 @@ define([
return item.id
});
utilities.applyTemplate($(this.el), eventsView, {categories:categories, model:this.model})
$(this.el).trigger('pagecreate')
$(this.el).trigger('pagecreate');
return this;
}
});

Expand Down
Expand Up @@ -38,13 +38,14 @@ define([
$("#performanceTimes").empty().append("<option data-placeholder='true'>Choose a show time ...</option>")

});
$("#dayPicker").empty()
$("#dayPicker").selectmenu('disable')
$("#performanceTimes").empty()
$("#performanceTimes").selectmenu('disable')
$("#dayPicker").empty();
$("#dayPicker").selectmenu('disable');
$("#performanceTimes").empty();
$("#performanceTimes").selectmenu('disable');
$(this.el).trigger('pagecreate');
$("#showSelector").selectmenu('refresh', true)
$("#performanceTimes").selectmenu('refresh')
$("#showSelector").selectmenu('refresh', true);
$("#performanceTimes").selectmenu('refresh');
return this;
},
performanceSelected:function () {
if ($("#performanceTimes").val() != 'Choose a show time ...') {
Expand Down
3 changes: 2 additions & 1 deletion demo/src/main/webapp/resources/js/app/views/mobile/venues.js
Expand Up @@ -14,7 +14,8 @@ define([
return model.get('address').city
}));
utilities.applyTemplate($(this.el), venuesView, {cities:cities, model:this.model})
$(this.el).trigger('pagecreate')
$(this.el).trigger('pagecreate');
return this;
}
});

Expand Down

0 comments on commit c441a83

Please sign in to comment.