在我的应用程序中,我已经包含了所有需要的JS文件(我的脚本,Twitter Bootstrap等库)。
问题是,当我有一个通过AJAX调用的请求时,所以在被调用的页面中不包含JS文件,这些文件包含在我的应用程序中,我必须将它们包含在被调用的页面中。
示例: my_scripts.js 包含许多JS函数。
链接到通过AJAX调用的页面
<a href="/articles/create_new" data-remote="true>Create New Article</a>
/views/articles/_create_new.html.haml
...some content of this file.. #here doesn't work the functions from the file "my_scripts.js"
当我输入 /views/articles/_create_new.html.haml 这个链接时
= javascript_include_tag "my_scripts"
...some content of this file..
然后在 /views/articles/_create_new.html.haml 那些JS功能正常工作。
我想问你,如果存在任何方式,如何自动将所有JS文件放在我的每一个AJAX页面中,因为总是将JS文件包含在AJAX页面中并不是好方法...
由于
答案 0 :(得分:1)
我会通过三种方式之一实现这一目标:
<强>的jQuery 强>
来自http://api.jquery.com/load/:
脚本执行使用不带后缀的URL调用.load()时 选择器表达式,内容在脚本之前传递给.html() 被删除。这将执行脚本块之前 丢弃。如果调用.load()并附加了一个选择器表达式 但是,在DOM之前,脚本会被删除 更新,因此不执行。两种情况的例子都可以 如下所示:
这里,作为文档一部分加载到#a的任何JavaScript都将 成功执行。
$('#a').load('article.html');
但是,在以下情况下,脚本 被加载到#b的文档中的块被剥离而不是 执行:
$('#b').load('article.html #target');
基本上,您可以将JS引用添加到Ajax请求返回的HTML中,jQuery将执行它们。
RequireJS或simular
不是直接返回HTML,而是将HTML作为JSON包的一部分返回,该包也包含一系列脚本引用:
{
html: '<p>stuff</p>',
scriptRefs: [ 'js/one.js', 'js/two.js' ]
}
然后我会使用类似RequireJS的东西遍历scriptRefs数组。
只需将代码添加到基页
老实说,我更有可能这样做。
答案 1 :(得分:1)