2013-05-02 3 views
2

J'ai des ItemViews chargés dynamiquement qui se chargent dans les régions de mise en page. Les modèles contiennent des composants jquery-ui, par ex. un curseur '#mySlider'. J'initialise le composant avec l'événement Maronette.Region onShow. Mon point de vue ressemble à ceci:Comment écouter les événements jquery-ui dans une Marionette.ItemView

var MyView = Backbone.Marionette.ItemView.extend({ 
    template: '#my-tpl', 

    initialize: function() { 
    _.bindAll(this); 
    }, 

    onShow: function(){ 
    $('#mySlider').slider({ 
    min: 1, 
    max: 10, 
    slide: function(event, ui) { 
     //some code here to update the the Views model, like 
     //this.model.set({'stroke': ui.value}); 
    }}); 

    ..... 

Il est évident que cela ne fonctionne pas, parce que le this.model n'est pas défini comme tant au sein #mySlider. Comment puis-je le faire correctement et capturer les événements jquery-ui en tant qu'événement Marionette.ItemView?

Répondre

2

Une simple fermeture fera l'affaire.

violon: http://jsfiddle.net/puleos/z7QsC/

var SliderView = Marionette.ItemView.extend({ 
    template: "#slide-template", 
    initialize: function() { 
     _.bindAll(this); 
    }, 
    onShow: function() {    
     var self = this; 

     $('#slider-range').slider({ 
     min: 1, 
     max: 10, 
     slide: self.updateSlider 
     }); 
    }, 
    updateSlider: function(event, ui) { 
     this.model.set({'stroke': ui.value}); 
    } 
});  
+0

C'est parfait et si simple! – lunacafu

Questions connexes