var Backgrid = require('backgrid'); module.exports = Backgrid.Cell.extend({ className : 'download-report-cell', events : { 'click' : '_onClick' }, _onClick : function() { if (!this.model.get('downloadAllowed')) { return; } var self = this; this.$el.html(''); //Using success callback instead of promise so it //gets called before the sync event is triggered this.model.save(null, { success : function() { self.model.set('queued', true); } }); }, render : function() { this.$el.empty(); if (this.model.get('queued')) { this.$el.html(''); } else if (this.model.get('downloadAllowed')) { this.$el.html(''); } else { this.className = 'no-download-report-cell'; } return this; } });