[英]Accessing a global javascript variable inside jsrender template and updating it
我试图用jsrender模板中的值更新全局javascript变量。 我怎样才能完成它......
我创造了一个小提琴http://jsfiddle.net/4RH7n/8/
我需要将最后一个电影名称放入该javascript变量中..
可以轻松注册自定义标记和帮助程序以访问或修改全局变量。 有一个样本在这里 (代码在这里 ),这表明两种方式,并说明设定和从模板中获得全局。 助手/自定义标签比使用{{* ...}}
更好(因为这样你可以更好地分离代码和标记) - 但是如果你确实使用{{*
语法,你必须设置allowCode=true
。 (见这个例子 )。
上述方法是使用您自己的扩展来访问任何全局的方法。 但是,对于大多数情况,您可能只需要访问某些特定的全局变量。 在这种情况下,如果你正在使用JsViews,那么很容易在.render()
调用(或.link()
调用)中传递全局(s)选项,如下所示:
...render(myData, { foo: myFooGlobal, bar: myBarGlobal });
然后在模板中的任何表达式中访问它们,例如:
... {{:~foo}} ... {{for ~bar}} ... {{/for}} ...
如果您希望能够从所有模板中访问这些全局变量(或者对所有对特定模板的调用),您可以将它们注册为全局(或特定于模板)的助手/模板参数,然后您不需要使用render / link调用传入它们。
例如,要为所有模板全局注册它们:
$.views.helpers({
foo: myFooGlobal,
bar: myBarGlobal
});
然后使用~foo
(或函数的foo()
以与上面完全相同的方式访问它们。
你会在GitHub上找到所有这些方法的样本。
除了上面提到的文档和示例之外, http://www.jsviews.com上还有更多最新文档和示例,特别是此处和此处 。
不确定你在问什么..数据不会来自模板,你已经拥有该对象中的数据。 直接使用它:
window.abcfx = function() {
alert(movies[movies.length-1].name);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.