Skip to content

Instantly share code, notes, and snippets.

@juanghurtado
Created June 18, 2012 16:35
Show Gist options
  • Save juanghurtado/2949288 to your computer and use it in GitHub Desktop.
Save juanghurtado/2949288 to your computer and use it in GitHub Desktop.
Backbone.Marionette ItemView triggers
// Model
module.SampleModel = Backbone.Model.extend({});
// View
module.SampleView = Backbone.Marionette.ItemView.extend({
template : template_string,
// This trigger runs only the first time. After that, "click" event is not triggered (defaults to href="#")
triggers : {
'click .reload' : 'reload'
},
initialize : function() {
this.bindTo(this.model, "change", this.modelChanged);
this.model.fetch();
},
modelChanged : function() {
// App has a Marionette.Region called "mainRegion"
App.mainRegion.show(this);
}
});
// Init
var model = new module.SampleModel();
var view = new module.SampleView({
model : model
});
view.on('reload', function() {
console.log('reload event');
model.fetch();
});
@mxriverlynn
Copy link

and thank you! i really appreciate that :)

@juanghurtado
Copy link
Author

Are you sure that the event on the model is "sync". It does not trigger when doing it this way:

var weatherModel = new module.WeatherModel({});

var weatherView = new module.WeatherView({
    model : weatherModel
});

weatherModel.on('sync', function() {
    App.mainRegion.show(weatherView);
});

weatherModel.fetch();

Data is fetched from the server (checked on browser console). If I use "all" on model event, the callback is executed many times, but not when using just "sync".

I'm looking on Backbone.js events catalogue, but none of them seems logic (except "sync"). Maybe "reset", but it is just for Collections

@juanghurtado
Copy link
Author

Is this a better approach?

weatherModel.fetch({
    success : function() {
        App.mainRegion.show(weatherView);
    }
});

@mxriverlynn
Copy link

I thought 'sync' was supposed to work like that... but the success callback would work certainly

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment