4

jsrenderテンプレートの値でグローバルJavaScript変数を更新しようとしています。どうすればそれを達成できますか...

私はフィドルを作成しましたhttp://jsfiddle.net/4RH7n/8/

そのjavascript変数に最後の映画名を入れる必要があります。

4

2 に答える 2

7

カスタムタグとヘルパーを簡単に登録して、グローバル変数にアクセスまたは変更できます。ここにサンプルがあり(コードはここにあります)、両方の方法を示し、テンプレート内からのグローバルの設定と取得の両方を示しています。ヘルパー/カスタムタグは、使用するよりも優れて{{* ...}}います(そうすることで、コードとマークアップをより適切に分離できるため)-ただし、{{*構文を使用する場合は、を設定する必要がありますallowCode=true。(この例を参照してください)。

上記のアプローチは、独自の拡張機能を使用して任意のグローバルにアクセスできるようにする方法です。ただし、ほとんどのシナリオでは、アクセスしたい特定のグローバルのみが存在する可能性があります。.render()その場合、次のように、呼び出し(または.link()JsViewsを使用している場合は呼び出し)のオプションとしてグローバルを渡すのは非常に簡単です。

...render(myData, { foo: myFooGlobal, bar: myBarGlobal });

次に、次のように、テンプレート内の任意の式でそれらにアクセスします。

... {{:~foo}} ... {{for ~bar}} ... {{/for}} ...

すべてのテンプレートから(または特定のテンプレートへのすべての呼び出しに対して)これらのグローバルにアクセスできるようにする場合は、代わりにグローバル(またはテンプレート固有)のヘルパー/テンプレートパラメーターとして登録できます。そうすれば、次のことを行う必要はありません。レンダリング/リンク呼び出しでそれらを渡します。

たとえば、すべてのテンプレートについて、それらをグローバルに登録するには、次のようにします。

$.views.helpers({
    foo: myFooGlobal,
    bar: myBarGlobal 
});

~foo次に、 (またはfoo()関数に対して)を使用して、上記とまったく同じ方法でそれらにアクセスします。

これらすべてのアプローチのサンプルはGitHubにあります。


アップデート:

上記で参照したドキュメントとサンプルに加えて、 http://www.jsviews.com、特にここここに、はるかに新しいドキュメントとサンプルがあります。

于 2012-09-12T23:22:59.083 に答える
0

何を求めているのかよくわかりません。データはテンプレートから取得されたものではなく、すでにそのオブジェクトにデータがあります。直接使用してください:

window.abcfx = function() {
  alert(movies[movies.length-1].name);
}

フィドル

于 2012-09-11T18:34:01.207 に答える