访问jsrender模板中的全局javascript变量并对其进行更新

访问jsrender模板中的全局javascript变量并对其进行更新,javascript,jsrender,Javascript,Jsrender,我正在尝试使用jsrender模板中的值更新全局javascript变量。我怎样才能完成它 我创造了一把小提琴 我需要在javascript变量中输入最后一部电影的名字。我不太确定你在问什么。。数据不会来自模板,您已经在该对象中拥有了数据。直接使用即可: window.abcfx = function() { alert(movies[movies.length-1].name); } 可以轻松注册自定义标记和帮助程序以访问或修改全局变量。有一个示例(代码is)显示了这两种方法,并说明了如

我正在尝试使用jsrender模板中的值更新全局javascript变量。我怎样才能完成它

我创造了一把小提琴


我需要在javascript变量中输入最后一部电影的名字。

我不太确定你在问什么。。数据不会来自模板,您已经在该对象中拥有了数据。直接使用即可:

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

可以轻松注册自定义标记和帮助程序以访问或修改全局变量。有一个示例(代码is)显示了这两种方法,并说明了如何在模板中设置和获取全局变量。帮助程序/自定义标记比使用
{{*..}
(因为这样可以更好地分离代码和标记)-但是如果使用
{*
语法,则必须设置
allowCode=true
(请参阅)

上述方法是使用您自己的扩展来访问任何全局文件的方法。但是,对于大多数情况,您可能只有某些特定的全局文件要访问。在这种情况下,在
.render()
调用(或
.link()上)将全局文件作为选项传入非常容易
如果您使用的是JsViews,请调用(如下所示):

...render(myData, { foo: myFooGlobal, bar: myBarGlobal });
... {{:~foo}} ... {{for ~bar}} ... {{/for}} ...
然后在模板中的任何表达式中访问它们,例如:

...render(myData, { foo: myFooGlobal, bar: myBarGlobal });
... {{:~foo}} ... {{for ~bar}} ... {{/for}} ...
如果希望能够从所有模板(或对特定模板的所有调用)访问这些全局参数,则可以将它们注册为全局(或特定于模板)帮助器/模板参数,然后不需要在渲染/链接调用中传递它们

例如,要对所有模板进行全局注册,请执行以下操作:

$.views.helpers({
    foo: myFooGlobal,
    bar: myBarGlobal 
});
然后,使用
~foo
(或函数的
foo()
)以与上面完全相同的方式访问它们

您将在上找到所有这些方法的示例


更新:


除了上面提到的文档和示例外,还有更多的最新文档和示例,具体来说是。

对不起,可能我不够清楚。.json正在动态更新,它不是常量。此外,根据少数条件,我可能会加载整个json或部分项目。这就是我想要更新的原因从jsrender模板中删除全局js变量。这可以实现吗?抱歉,只是不理解为什么需要对模板执行任何操作。模板是客户端的,因此您可以在某个地方使用json数据来获取所需的值。好的,这是当前的场景。我有两个json。对于主json,我正在加载g表单元素中的所有细节。一个表单元素是一个下拉框,我需要用所有值填充它(这些值来自另一个json)并选择当前json中的值。嗨,Boris,很高兴你看到了这个问题…我刚刚创建了一个提琴,但它并不像在普通网站上那样工作得很好。但是看看这个提琴,你会看到我在尝试做什么…显示了连接点击事件的一种方式。你也可以使用JsViews作为一种使交互更容易的方式呃,为了实现……谢谢Boris,我用了你的技巧让它发挥作用……非常感谢你的宝贵建议。我感谢你的时间和努力。我刚刚编辑了上面的回复,添加了一些不同场景的附加信息。电影是可以使用电影的数组。推送({name:“any”,releaseYear:“any”})