我正在{{=LOAD(...)}}
使用{{=LOAD(...)}}
向我的web2py页面注入一个组件,但是我需要在加载组件后触发一些javascript。通常,如果通过ajax加载某些内容,则会有成功的回调。如何通过web2py中的{{1}}设置其中一个?
答案 0 :(得分:3)
最简单的方法是在组件的控制器中设置response.js
:
def mycomponent():
response.js = 'alert("mycomponent just loaded");'
return dict()
或者,您可以直接在组件本身中包含<script>
标记,该标记将在加载组件时执行。
最后,每当web2py Ajax调用完成时,都会触发ajax:complete
事件。因此,您可以设置事件处理程序并检查Ajax响应是否为组件:
$(document).on('ajax:complete', function(e, xhr, status) {
if (xhr.getResponseHeader('web2py-component-content')) {
alert('A component just loaded.');
}
});
请注意,web2py-component-content
标头的存在表明Ajax响应是一个组件。
最后一种方法的唯一缺点是在组件的内容被添加到DOM之前将触发事件处理程序,因此如果事件处理程序需要很长时间才能运行,那么它可能会显着延迟组件内容的出现。