我有一个Jinja2
宏,当前在我的主页上立即预加载,尽管内容是隐藏的,只有在用户点击菜单项后才会显示。我想禁用预加载,仅在用户单击菜单项后才加载/显示宏的内容。我不确定执行此操作的最佳方法是通过JQuery
还是Jinja2
或HTML
方式执行此操作。
这是我的菜单项。
<li class="my_class">
<a href="#" data-toggle="my_macro" data-target="#my_macro_id">Call My Macro</a>
</li>
这是我的宏。
{{ macros.my_macro_func(macro_id='my_macro_id' macro_content=('my_macro' | my_macro_link)) }}
这两个目前都位于我的main.html
页面
在Python
/ Flask
方面,我有:
@app.template_filter(`my_macro_link`)
def my_macro_link_filter_func(input='some_input')
return Markup( get_values(input) )
答案 0 :(得分:1)
将宏放在模板中。在Flask中创建一个GetMacro处理程序,并以my_macro_id作为参数来接收您的ajax请求。让你的菜单项onclick指向这个js脚本并做这样的事情......
function GetMacro(my_macro_id) {
if(window.XMLHttpRequest)
xmlhttp=new XMLHttpRequest();
else// code for IE6, IE5
xmlhttp=new ActiveXObject('Microsoft.XMLHTTP');
xmlhttp.onreadystatechange=function()
{
if (xmlhttp.readyState==4 && xmlhttp.status==200)
{
if(xmlhttp.responseText != '')
{
$('#ReturnedHtml').html(xmlhttp.responseText);
}
}
}
xmlhttp.open("GET","/class/GetMacro?my_macro_id=" + my_macro_id, true);
xmlhttp.send();
}
希望这有帮助!