Gar*_*ett 6 javascript overriding view backbone.js
我有一个WorkoutExerciseRowView延伸ExerciseRowView.渲染函数非常相似,只是WorkoutExerciseRowView必须在ExerciseRowView渲染中添加一些参数.如何ExerciseRowView在渲染函数中调用WorkoutExerciseRowView渲染函数?
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
});
}
});
Run Code Online (Sandbox Code Playgroud)
谢谢!
sol*_*oth 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
});
}
});
Run Code Online (Sandbox Code Playgroud)
来自Backbone的文档:http://backbonejs.org/#Model-extend
简要介绍一下super:JavaScript没有提供一种调用super的简单方法 - 在原型链上定义的同名函数更高.如果覆盖像set或save这样的核心函数,并且想要调用父对象的实现,则必须按以下方式显式调用它:
Backbone.Model.prototype.set.call(this, attributes, options);
小智 7
你应该可以使用
ExerciseRowView.prototype.render.call(this)
Run Code Online (Sandbox Code Playgroud)
这将从ExerciseRowView调用render函数,并将范围设置为this(当前模型)