我开发我在哪里使用jQuery做AJAX请求一个简单的金字塔应用。 我直到现在内有变色龙我的模板我的JavaScript代码。 现在,我想我的JavaScript提取到另一个位置(例如,作为静态资源)。
我的问题是,我发现我的JavaScript代码依赖于动态生成的内容,如下所示:
$.post("${request.route_url('my_view')}",{'data': 'some data'}, function(html){
$("#destination").html(html);
});
动态元件:
"${request.route_url('my_view')}"
这是调用模板中请求对象的route_url方法。
是否有这样的JavaScript文件分割成自己的模板,并为他们提供路线和观点还是我只是保持我的javascript在我的网页模板识别的模式?
是; 你一般把像扩大航线具体情况的信息转换成模板,并访问您的(静态)JavaScript库信息。
包括上下文信息可以通过多种方式来完成,依口味:
你可以在你生成的HTML使用在标签的数据属性:
<body data-viewurl="http://www.example.com/route/to/view"> ... </body>
然后您可以在与你的静态JS代码负荷的jQuery .data()
函数 :
var viewurl = $('body').data('viewurl');
用一个虚构的LINK标签的关系,包括在文档头部链接:
<head> <link rel="ajax-datasource" id="viewurl" href="http://www.example.com/route/to/view" /> ... </head>
这可以使用被检索$('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>
而这些变量是直接可借鉴contextVariables.viewurl
。