3

プランカーを使って約1ヶ月になります。私はbackbonejsプランカーを作成していましたが、Underscoreはテンプレート設定を失い、ERBスタイルのテンプレートにフォールバックしますが、Mustacheスタイルの構文が必要{{ myData }}です。app.jsで値を設定しています(これは常にアプリで行います)が、何らかの理由で、ERBに戻り続け<%=boo%>ます。誰かが私のテンプレート設定をまっすぐにするのを手伝ってもらえますか? アンダースコアテンプレートを使用するプランカーでは、Chrome開発ツールまたはFirebugまたは同等の機能でコンソール出力を表示する必要があります...

ヒントやコツをありがとう。私は試した

_.templateSettings = { 
   interpolate: /\{\{(.+?)\}\}/g,
   evaluate: /\[\[(.+?)\]\]/g
 }; 

console.log(_.templateSettings)設定直後にapp.jsファイルにアクセスすると、すべてが正しいように見えますが、テンプレートが処理されていません。ビュー内で中断して同じconsole.log()を実行すると、ERBスタイルに戻されていることがわかります。誰かが私の設定を固定する方法を知っていますか?私はこの方法を問題なく何度も使用したので、おそらくそれはプランカーの問題です。

これは通常トリックを行います。私も試してみます...window._= _;

ヘルプ、ヒント、トリックなどをありがとう...

4

1 に答える 1

1

実行順序の問題があります。あなたapp.jsはこれを言います:

var app = {
  init: function () {
    _.templateSettings = {
      interpolate: /\{\{(.+?)\}\}/g,
      evaluate: /\[\[(.+?)\]\]/g
    };
    window._ = _;
  },
  //...

そのため、誰かが電話をかけるまで、テンプレート設定は適用されませんapp.init()。のビューの1つを見ると、次のmain.jsようなものが表示されます。

Zurg.Views.AltContent = app.View.extend({
  #...
  template: _.template([...].join('')),
  #...

したがって、_.template呼び出しmain.jsはロードおよび解析中に発生しますがapp.init()、後で呼び出されるまで呼び出されません。

あなたがする必要があるのは、この順序で物事が起こるように手配することです:

  1. ライブラリをロードします(jQuery、Underscore、Backbone、...)
  2. _.templateSettings区切り文字を使用するようにを調整します。
  3. ビューをロードします。

_.templateSettingsを外側に移動した場合app.init

_.templateSettings = {
    interpolate: /\{\{(.+?)\}\}/g,
    evaluate: /\[\[(.+?)\]\]/g
};

var app = {
  init: function () {
    // Whatever you really need to initialize things goes here...
  },
  //...

その後、すべてがうまくいくはずです。ところで、あなたのwindow._ = _;トリックは何の役にも立たなかったので、私はそれを取り出しました。escapeまた、正規表現も含める_.templateSettings必要があります。必要ない場合もありますが、完全性は良好です。

于 2012-12-05T22:43:12.700 に答える