1

以前にこのエラーが発生し、SOで見つけた解決策を試しましたが、この場合、見つけた解決策を試しても回避できません。ファイルの下部に js スクリプト タグを付けてインデックス ファイルのヘッダーに配置した question_template があります。ビューのイニシャライザでは、jQuery html 関数を使用してテンプレートを取得します。コンソール ログには、テンプレートが index.html から取得されたことが示されます。ただし、アンダースコア _.template に挿入しようとすると、can't call replace of undefined エラーが発生します。

 var QuestionView = Backbone.View.extend({
el: $(".east"), 
initialize: function(){


    var template = $('#question_template').html();
    console.log(template);
    this.template = _.template(template);   #error triggered


},

テンプレートをログに記録できるので、何が問題なのかわかりません。これはアンダースコア コードの一部です。

text.replace(matcher, function(match, escape, interpolate, evaluate, offset) {
source += text.slice(index, offset)
.replace(escaper, function(match) { return '\\' + escapes[match]; });

最初の質問: 「テキスト」は何を表しますか?私の場合は未定義です。「テキスト」がテンプレートだと思っていましたが、テンプレートをログに記録できるので、どのように未定義ですか?

また、ドキュメントにラップされたすべての js コード (質問ビューの初期化を含む) を用意しました。これは、この問題に関する他の SO の質問で解決策でした。

$(function() {


  ...code ommitted...
  var question_view   = new QuestionView({ model: game});



});

2 番目の質問: 他に試せることはありますか

更新 メモ、その後モデルデータをテンプレートに渡しますが、エラーがトリガーされるため、そこまで到達しません

**$(this.el).html(this.template(response));** 

3つのステップでテンプレートを準備します

1. var template = $('#question_template').html();
        console.log(template);
2.      this.template = _.template(template);

3. $(this.el).html(this.template(response)); 
4

1 に答える 1

0

モデルデータをテンプレートに渡す必要があります。

this.template = _.template(テンプレート, this.model.toJSON());

于 2013-02-02T21:47:07.637 に答える