2012-08-02 121 views
1

是否有JsRender事件或回调来确定渲染方法何时完成?我想要处理大量模板,并确保在抓取生成的文档元素之前完成了所有模板。所有渲染方法是否同步运行?是否有JsRender渲染完成事件

回答

3

jsRender同步呈现模板,没有回调函数,.render()函数只是返回呈现的数据。

如果您确实有多个异步进程(例如返回数据的ajax调用,然后您使用jsRender进行渲染),并且您需要在执行某些操作之前完成所有这些操作,则可以使用jQuery的Deferred对象。看看.when()如何做到这一点。

+0

完美的,谢谢你,并在小时方法很好的提示。 – JohnGoldsmith 2012-08-02 21:33:36

+0

是的,当你将渲染的内容插入DOM(例如_ $(...)。html($ .render.myTmpl(data)); _(它是同步的)时,你可以立即(在下一行)在(...)_上调用_ $(...)。来附加处理程序。 – BorisMoore 2012-09-12 23:28:05

0

有一种方法可以确定最后一行何时由模板引擎渲染。 a)创建一个辅助函数。在这种情况下称为:jsRenderDone 然后在底部的模板中使用条件逻辑,仅在最后一行被渲染后触发辅助函数。

{{if #index+1 >= #get("array").data.length}} 
{{:~jsRenderDone()}} {{/if}}