0

私は Expressjs を使用してこの Web アプリに取り組んでおり、Microsoft の Razor ビュー エンジンが提供する機能の必要性を感じています。

Razor を使用すると、他のヘルパー内からヘルパーを呼び出すことができます。Expressjs では、ヘルパーがビューから呼び出された場合、ヘルパーのスコープはヘルパー自体には拡張されません。

これに対する解決策はありますか?ヘルパーをパラメーターとしてビューに渡したり、ヘルパーのファイルを要求したりする必要はありません。

前もって感謝します

例:

私は持っている

app.helpers({ TextBoxHelper: require('./TextBox.js') });
app.helpers({ CharCounter  : require('./CharCounter.js'  ) });

私のサーバーで。ビューをレンダリングするときは、jshtml ビュー エンジンを使用してヘルパーを呼び出します。次の手順を実行するだけです。

@TextBoxHelper()    //I can do this because all helpers are present in this scope

ヘルパーが呼び出されると、ビュー スコープを終了し、そこで他のヘルパーにアクセスできなくなります。

さて、このヘルパー "TextBox" が "CharCounter" を呼び出すようにしたいと思います。この 2 番目のヘルパーは、他のいくつかのヘルパーによって呼び出されることになっているため、スクリプトを要求したりパラメーターとして送信したりすることなく、ヘルパーの ".js" ファイルから呼び出すことができれば素晴らしいことです。

4

1 に答える 1

0

すべてのヘルパーを 1 つのオブジェクトにまとめます。そうすれば使えますthis.someHelper()

var helpers = {
  first: function () {
    console.log('first');
    helpers.second();
  },

  second: function () {
    console.log('second');
  }
};


helpers.first();

希望どおりでない場合thisは、Javascript でいつでも簡単に変更できます。

于 2012-07-13T11:07:30.220 に答える