从远程服务器加载 jquery 模板
我在几个项目中使用 jquery 模板。事实是,为了获得一致的感觉,我计划将所有通用模板放在 CDN 服务器上,然后使用(在 head 中)从不同的服务加载它们:
<script id="errorPage" src="http://www.mycdn.com/error-page.html" type="text/x-jquery-tmpl"></script>
然后(在页面就绪处理程序中),我使用以下内容渲染我的模板的代码:
$("#errorPage").tmpl("errorPage", {'message': 'Permission denied'}).prependTo("body");
事情是......它不起作用!?没有渲染任何内容...我不知道这是否可能。我对 jquery-template 很陌生,所以我可能还遗漏了一些明显的东西!
有什么想法吗?
I am using jquery templates on several projects. Thing is, in order to get a consistent feel, I was planning to put all the common templates on a CDN server, and then load them from different services with (in head):
<script id="errorPage" src="http://www.mycdn.com/error-page.html" type="text/x-jquery-tmpl"></script>
Then (in page ready handler), I use the following code to render my template:
$("#errorPage").tmpl("errorPage", {'message': 'Permission denied'}).prependTo("body");
Thing is ... it doesn't work !? nothing is rendered ... I don't know if it is even possible. I am very new to jquery-template, so I might also be missing something obvious !!!
Any idea ?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
你的模板是什么样的?浏览器将其处理为 html 还是 javascript?尝试将其放入 .js 文件中或将模板作为 javascript 文件中的字符串变量加载。而不是
加载一些具有如下内容的 .js 文件:
您可以拥有一个或多个带有模板的 js 文件,但应该将 javascript 作为源,而不是 html。
我尝试你的场景后更新:
当按照您尝试的方式加载时,error-page.html 的内容不会被解析为 jquery 模板,并且您会得到空的 errorPage 变量。
How does your template look like? Is browser processing it as html or as javascript? Try putting it in .js file or loading your templates as a string variables in javascript file. Instead of
load some .js file which has something like this:
You can have one or more js files with templates, but should have javascript as a source, not html.
UPDATE after I tried your scenario:
When loaded the way how you tried, contents of error-page.html are not parsed as jquery template and you get empty errorPage variable.
您可以在外部文件中创建模板并使用
$.getScript
调用它们。例如:
example.html
template.js
测试此功能的唯一问题是浏览器通常不允许 AJAX 请求访问文件,因此您必须抛出将其插入本地网络服务器进行尝试。
编辑:
显然,您还可以强制仅使用 html 请求:
template2.js
请注意,在
$.get
中的回调之后,我显式指定了“html”。You can create the templates in external files and call them with
$.getScript
.For instance:
example.html
template.js
The only problem with testing this is that browsers don't usually allow file access for AJAX requests, so you'll have to throw it into a local web server to try it out.
edit:
You can apparently also force html-only requests:
template2.js
Notice how after the callback in
$.get
, I'm explicitly specifying 'html'.