2012-06-27 8 views
6

Mam WorkoutExerciseRowView, który rozszerza. Funkcje renderowania są bardzo podobne, z wyjątkiem tego, że WorkoutExerciseRowView musi dodać kilka parametrów do renderowania ExerciseRowView. Jak mogę wywołać funkcję renderowania ExerciseRowView wewnątrz funkcji renderowania WorkoutExerciseRowView?Kręgosłup: wywołanie zastąpionej funkcji renderowania() rozszerzonego widoku

var WorkoutExerciseRowView = ExerciseRowView.extend({  
    render : function() { 
     //return this.constructor.render({ // doesn't work 
     return this.render({ // doesn't work 
      workoutExercise : this.model, 
      exercise : this.model.get("exercise"), 
      workoutSection : this.model.get("section"), 
      isEditable : true, 
      number : this.number, 
      WorkoutExercise : WorkoutExercise, 
      WorkoutSection : WorkoutSection 
     }); 
    } 
}); 

Dzięki!

Odpowiedz

14
var WorkoutExerciseRowView = ExerciseRowView.extend({  
    render : function() { 
     return ExerciseRowView.prototype.render.call(this,{ 
      workoutExercise : this.model, 
      exercise : this.model.get("exercise"), 
      workoutSection : this.model.get("section"), 
      isEditable : true, 
      number : this.number, 
      WorkoutExercise : WorkoutExercise, 
      WorkoutSection : WorkoutSection 
     }); 
    } 
}); 

Z dokumentacji kręgosłup tu: http://backbonejs.org/#Model-extend

Krótki bok na Super: JavaScript nie umożliwiają w prosty sposób, aby zadzwonić super - funkcji o tej samej nazwie zdefiniowanej wyżej na prototypowym łańcuchu. Jeśli zastąpić funkcję rdzenia podobnego zestawu, lub zapisać i chcesz powołać realizację obiektu nadrzędnego, musisz jednoznacznie nazwać, wzdłuż tych linii:

Backbone.Model.prototype.set.call(this, attributes, options);

7

Powinieneś móc korzystać

ExerciseRowView.prototype.render.call(this) 

to wywoła funkcję renderowania z ExerciseRowView z zakresem określonym w tym modelu (prąd)

1
this.constructor.__super__.render.call(this,{}); 
+1

Według wpisów na github, __super__ nie powinien być używany. –

Powiązane problemy