Gra*_*art 5 javascript python pyramid chameleon
我正在开发一个简单的金字塔应用程序,我正在使用JQuery来执行AJAX请求.我到目前为止在变色龙模板中有我的javascript代码.现在我想将我的javascript提取到另一个位置(例如作为静态资源).
我的问题是我发现我的javascript代码依赖于动态生成的内容,如下所示:
$.post("${request.route_url('my_view')}",{'data': 'some data'}, function(html){
$("#destination").html(html);
});
Run Code Online (Sandbox Code Playgroud)
动态元素是:
"${request.route_url('my_view')}"
Run Code Online (Sandbox Code Playgroud)
这是在模板中调用请求对象的route_url方法.
是否有一种公认的模式将这些javascript文件分离到他们自己的模板中并为他们提供路线和视图,或者我只是将我的javascript保存在我的页面模板中?
是; 您通常会将特定于上下文的信息(如扩展路径)放入模板中,并从(静态)JavaScript库中访问此信息.
包括上下文信息可以通过各种方式完成,具体取决于品味:
您可以在生成的HTML中的标记上使用数据属性:
<body data-viewurl="http://www.example.com/route/to/view">
...
</body>
Run Code Online (Sandbox Code Playgroud)
然后,在您的静态JS代码中加载jQuery .data()函数:
var viewurl = $('body').data('viewurl');
Run Code Online (Sandbox Code Playgroud)使用组合的LINK标记关系在文档头中包含链接:
<head>
<link rel="ajax-datasource" id="viewurl"
href="http://www.example.com/route/to/view" />
...
</head>
Run Code Online (Sandbox Code Playgroud)
可以使用$('link#viewurl').attr('href')或检索$('link[rel=ajax-datasource]').attr('href').这仅适用于URL信息.
直接在模板中生成JS变量,以便从静态代码中引用:
<head>
...
<script type="text/javascript">
window.contextVariables = {
viewurl = "http://www.example.com/route/to/view",
...
};
</script>
</head>
Run Code Online (Sandbox Code Playgroud)
这些变量可直接引用contextVariables.viewurl.
| 归档时间: |
|
| 查看次数: |
1272 次 |
| 最近记录: |