6

WorkoutExerciseRowView拡張するがありますExerciseRowViewWorkoutExerciseRowViewrender 関数は、 の renderにいくつかのパラメータを追加する必要があることを除いて、非常によく似ていExerciseRowViewます。ExerciseRowViewの render 関数内で の render 関数を呼び出すにはどうすればよい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
        });
    }
});

ありがとう!

4

3 に答える 3

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
        });
    }
});

ここのバックボーンのドキュメントから: http://backbonejs.org/#Model-extend

super の簡単な説明: JavaScript は、super を呼び出す簡単な方法を提供しません。これは、プロトタイプ チェーンの上位に定義された同じ名前の関数です。set や save などのコア関数をオーバーライドし、親オブジェクトの実装を呼び出したい場合は、次の行に沿って明示的に呼び出す必要があります。

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

于 2012-06-27T04:00:37.477 に答える
7

あなたは使用できるはずです

ExerciseRowView.prototype.render.call(this)

これは、スコープを this (現在のモデル) に設定して、ExerciseRowView から render 関数を呼び出します。

于 2012-06-27T04:02:15.097 に答える