如何使用 Backbone.js 在 HTML 页面中创建和显示外部模板
how to create and display external template in html page using Backbone.js?
我对骨干网很陌生.js,我正在练习在我的"索引.html"页面中显示模板。我在"索引.html"中创建了一个模板,并在使用视图中显示它。它适用于单个 html 文件,即所有内容都保存在"index.html"中。但是现在我希望这些模板存储在其他文件中并显示在我的"索引.html"中。我试图找到一些解决方案,但一切都令人困惑。所以拜托,谁能告诉我我应该怎么做。
以下是我要显示的模板(当前在"索引.html"中):
<script type="text/template" id="cloudtag_tempalte">
<center>
<ul class="cld" ">
<li > <a class="tag1" id="t1" href="https://www.google.com" target="_blank"></a> </li>
<li > <a class="tag2" id="t2" href="#">sachin </a> </li>
<li > <a class="tag3" id="t3" href="#">Ramesh </a> </li>
<li > <a class="tag1"id="t33" href="#">Tendulkar</a></li>
<li > <a class="tag5"id="t34" href="#">Cricket</a></li>
<li > <a class="tag2"id="t35" href="#">Test</a></li>
</ul><!--/cld-->
</center>
</script>
下面是一个显示它的div(在同一个'index.html'中):
<div class="tags" id="myTags"> </div><!--/tags-->
以下是视图脚本(在同一文件"索引.html"中):
<script type="text/javascript">
var cld_view=Backbone.View.extend({
initialize: function(){
},
render: function(){
// Compile the template using underscore
var template = _.template( $("#cloudtag_tempalte").html(), {} );
// Load the compiled HTML into the Backbone "el"
this.$el.html( template );
}
});
var cloudtag=new cld_view({el:$("#myTags")});
cloudtag.render();
</script>
因此,请建议我进行更改以使此模板外部。感谢赞美. . .
最简单的方法是使用underscore.js
,这是由 backbone .js 本身建议的。如果你想更进一步,那么你可以选择模板引擎,比如:
- 车把
- 木偶
等等。
我个人更喜欢下划线.js。一个例子如下:
使用下划线 :
$.get('templates/your-template-file.html', function (data) {
template = _.template(data, {
data: data_you_want_to_pass_to_template
});
this.$el.html(template);
}, 'html');
至于将其扩展到您的代码:
var cld_view=Backbone.View.extend({
el:'template_div',
initialize: function(){
},
render: function(){
// Compile the external template file using underscore
$.get(App.baseUrl + 'templates/your-template-file.html', function (data) {
template = _.template(data, { });
this.$el.html(template);
}, 'html');
}
});
App.baseUrl
- 我设置为配置的项目根目录的完整路径。您可以重复使用或删除它。但只要确保,你指向确切的模板文件夹。
您需要指定el
标记,否则您需要对要关注的div 进行硬编码以呈现模板。
干杯
我将编译的模板附加到对象本身。 您可以将额外的模板附加到主模板
<script type="text/javascript">
var cld_view=Backbone.View.extend({
//compiled templates
template : _.template($("#cloudtag_tempalte").html()),
template2 : _.template($("#another_template").html()),
initialize: function(){
},
render: function(){
// Load the compiled HTML into the Backbone "el"
this.$el.html( this.template);
//add other templates to the main one.
this.$el.find('someSelector').append(template2 );
}
});
var cloudtag=new cld_view({el:$("#myTags")});
cloudtag.render();
</script>
.最后,在努力使用 backbone.html 在我的"index"页面中创建和显示外部模板后,我找到了解决问题的方法.js。
为此,我使用了下划线js。以下是我成功运行应用程序所遵循的过程:
我按照本视频中提到的教程进行操作。
我创建了一个单独的模板文件,名为"CloudTagTemplate.html",并将上述问题中提到的html代码粘贴到此文件中,并保存在"模板"文件夹中,稍后我将在其中存储其他模板:
我的云标签模板.html:
<center>
<ul class="cld" ">
<li > <a class="tag1" id="t1" href="https://www.google.com" target="_blank"></a> </li>
<li > <a class="tag2" id="t2" href="#"></a> </li>
<li > <a class="tag3" id="t3" href="#"></a> </li>
<li > <a class="tag2" id="t4" href="#"></a> </li>
<li > <a class="tag4" id="t5" href="#"></a> </li>
<li > <a class="tag1" id="t6" href="#"></a> </li>
<li > <a class="tag1" id="t7" href="#"></a> </li>
<li > <a class="tag5"id="t8" href="#"></a> </li>
<li > <a class="tag2"id="t9" href="#"></a></li>
<li > <a class="tag1"id="t10" href="#"></a></li>
<li > <a class="tag3"id="t11" href="#"></a></li>
<li > <a class="tag4"id="t12" href="#"> </a></li>
<li > <a class="tag1"id="t13" href="#"></a></li>
<li > <a class="tag5"id="t14" href="#"></a></li>
<li > <a class="tag1"id="t15" href="#"></a></li>
<li > <a class="tag2"id="t16" href="#"></a></li>
<li > <a class="tag1"id="t17" href="https://www.google.com"></a></li>
<li > <a class="tag2" id="t18" href="#"></a></li>
<li > <a class="tag3"id="t19" href="#"></a></li>
<li > <a class="tag2"id="t20" href="#"></a></li>
<li > <a class="tag4"id="t21" href="#"></a></li>
<li > <a class="tag1"id="t22" href="#"></a></li>
<li > <a class="tag1"id="t23" href="#"></a></li>
<li > <a class="tag5"id="t24" href="#"></a></li>
<li > <a class="tag2"id="t25" href="#"></a></li>
<li > <a class="tag1"id="t26" href="#"></a></li>
<li > <a class="tag5"id="t27" href="#"></a></li>
<li > <a class="tag3"id="t28" href="#"> </a></li>
<li > <a class="tag1"id="t29" href="#"></a></li>
<li > <a class="tag3"id="t30" href="#"></a></li>
<li > <a class="tag1"id="t31" href="#"></a></li>
<li > <a class="tag4"id="t32" href="#"></a></li>
<li > <a class="tag1"id="t33" href="#"></a></li>
<li > <a class="tag5"id="t34" href="#"></a></li>
<li > <a class="tag2"id="t35" href="#"></a></li>
</ul><!--/cld-->
</center>
然后我在视图文件夹中创建了一个 CloudTagView.js:
我的云标签视图.js:
var cld_view=Backbone.View.extend({
el:'#myTags',
initialize: function(){
},
render: function(){
var that=this;
$.get( '/multipage/Backbone/Templates/CloudTagTemplate.html', function (data) {
template = _.template(data, { });
that.$el.html(template);
}, 'html');
}
});
var cloudtag=new cld_view();
cloudtag.render();
请注意——
var that=this;
放在那里很重要,因为我们正在定义匿名函数 $.get()
最后,我将"索引.html中的所有必需文件链接为:
<script src="Backbone/Views/CloudTagView.js"></script>
<script src="Backbone/Views/LoginModalView.js"></script>
最后它如我所愿地工作得很好。感谢@Roy·
- 创建具有可变长度幻灯片显示的幻灯片
- 如何创建一个“;表单弹出框“;在chrome中右键单击时位于突出显示的单词上方
- 如何创建一个“;显示更多“;按钮,并指定最初可以显示的文本行数
- 在JavaScript中,如何修复元素显示和变量创建之间的初始差异
- 如何在标题上创建弹出框,当点击关闭按钮时,不使用jquery或php在网站中显示
- 为自定义网站创建JavaScript搜索框,创建显示搜索结果的弹出窗口
- 如何在不使用iframe或库的情况下创建剪切显示窗口区域
- 如何创建multiselect来显示Django中每个选定项的详细信息
- 我如何创建一个动态地图来显示我们公司的位置
- 不显示为表单元素的图像输入按钮的动态创建和appendChild
- 当从jquery的点击事件中的每个循环创建的数组到它之外时,它显示空白数组
- 单击旧列表只显示上次创建的id,应在单击时显示列表id
- 如何在网站上创建仅显示文本的简单弹出窗口
- 传单:如何创建显示所有其他图层的图层组
- jQuery Mobile:动态表单创建显示本机控件与jQuery Mobile插件控件
- 如何使用 D3.js 在带有按钮的一个区域中创建/显示具有相同数据的图表的多次迭代
- 是否可以在不影响相邻元素的情况下创建显示/隐藏内联块
- 创建,显示图像作为背景图像一个接一个- JavaScript
- 在我的例子中,如何创建显示和隐藏元素
- 创建“显示内容”效果的好方法