访问jsrender模板中的全局javascript变量并更新它

qui*_*ner 4 javascript jsrender

我试图用jsrender模板中的值更新全局javascript变量.我怎样才能完成它......

我创造了一个小提琴http://jsfiddle.net/4RH7n/8/

我需要将最后一个电影名称放入该javascript变量中..

Bor*_*ore 7

可以轻松注册自定义标记和帮助程序以访问或修改全局变量.有一个样本在这里(代码在这里),这表明两种方式,并说明设定和从模板中获得全局.助手/自定义标签比使用更好{{* ...}}(因为这样你可以更好地分离代码和标记) - 但如果你确实使用了{{*语法,你必须设置allowCode=true.(见这个例子).

上述方法是使用您自己的扩展来访问任何全局的方法.但是,对于大多数情况,您可能只需要访问某些特定的全局变量.在这种情况下,在.render()调用(或.link()使用JsViews时调用)中传递全局(s)in选项非常容易,如下所示:

...render(myData, { foo: myFooGlobal, bar: myBarGlobal });
Run Code Online (Sandbox Code Playgroud)

然后在模板中的任何表达式中访问它们,例如:

... {{:~foo}} ... {{for ~bar}} ... {{/for}} ...
Run Code Online (Sandbox Code Playgroud)

如果您希望能够从所有模板中访问这些全局变量(或者对所有对特定模板的调用),您可以将它们注册为全局(或特定于模板)的助手/模板参数,然后您不需要使用render/link调用传入它们.

例如,要为所有模板全局注册它们:

$.views.helpers({
    foo: myFooGlobal,
    bar: myBarGlobal 
});
Run Code Online (Sandbox Code Playgroud)

然后使用~foo(或foo()用于函数)以与上面完全相同的方式访问它们.

你会在GitHub上找到所有这些方法的样本.


更新:

除了上面提到的文档和示例之外,http://www.jsviews.com上还有更多最新文档和示例,特别是此处此处.