ホームページ >ウェブフロントエンド >jsチュートリアル >Backbone.js で「アンダースコア テンプレート変数が定義されていません」というエラーが発生するのはなぜですか?

Backbone.js で「アンダースコア テンプレート変数が定義されていません」というエラーが発生するのはなぜですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-02 16:05:17376ブラウズ

Why Am I Getting an

アンダースコア テンプレート変数が定義されていないエラーが解決されました

Backbone.js では、アンダースコア テンプレートを使用して HTML を動的に生成するのが一般的ですが、以前のコード スニペットでは「変数が定義されていません」が発生する可能性があります「エラー。この記事では、この問題が発生する理由とその解決方法について説明します。

問題

以前は、次の構文を使用して 1 つのステップでアンダースコア テンプレートを解析して入力できました。

var html = _.template(template_string, data);

変更点

ただし、Underscore バージョン 1.7.0 以降では、テンプレートの概念が導入されました。オプション。_.template() の 2 番目の引数として明示的に指定する必要があります。これらのオプションを使用すると、テンプレートの動作をきめ細かく制御できます。

解決策

Underscore テンプレートを正しくコンパイルして実行するには、次の手順に従います。

  1. テンプレートをコンパイルするusing _.template(template_string).
  2. フィールドに埋めるデータを使用して、返された関数を実行します。 template.

これは次のように表すことができます:

var tmpl = _.template(template_string);
var html = tmpl(data);

Airbnb でテンプレートを実装する方法を示す次のコード スニペットを考えてみましょう。 バケーションレンタルデータセット:

var V = Backbone.View.extend({
  el: 'body',
  render: function() {
    var data = [
      {
        id: 1,
        lat: -27,
        lon: 153
      },
      {
        id: 2,
        lat: -33,
        lon: 151
      }
    ];
    var tmpl = _.template('<li><%= id %>. <%= lat %>, <%= lon %></li>');
    var html = data.map(tmpl).join('');
    this.$el.html(html);
    return this;
  }
});

var v = new V();

v.render();

正しいテンプレート構文に従うことで、Backbone.js アプリケーションで Underscore テンプレートを効果的に使用できます。

以上がBackbone.js で「アンダースコア テンプレート変数が定義されていません」というエラーが発生するのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。