我正在尝试使用来自 jsrender 模板的值更新全局 javascript 变量。我怎样才能实现它...
我创建了一个小提琴http://jsfiddle.net/4RH7n/8/
我需要将最后一部电影的名称放入该 javascript 变量中。
我正在尝试使用来自 jsrender 模板的值更新全局 javascript 变量。我怎样才能实现它...
我创建了一个小提琴http://jsfiddle.net/4RH7n/8/
我需要将最后一部电影的名称放入该 javascript 变量中。
可以轻松注册自定义标签和助手以访问或修改全局变量。这里有一个示例(代码在这里),它显示了两种方式,并说明了从模板中设置和获取全局变量。助手/自定义标签比使用更好{{* ...}}
(因为这样你可以更好地分离代码和标记) - 但如果你确实使用{{*
语法,你必须设置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上还有更多最新的文档和示例,特别是这里和这里。
不太确定您在问什么。数据不会来自模板,您已经在该对象中拥有数据。直接使用即可:
window.abcfx = function() {
alert(movies[movies.length-1].name);
}