我必须插入一个用 html 硬编码的简单菜单,但我不知道应该在哪里插入它。我应该直接在路由器中添加html代码吗?如何?
问问题
484 次
2 回答
2
不,您不应该为此使用路由器,您应该在 Backbone.View 对象中执行此操作,该对象应该创建 HTML 并添加它。
没有模板的更简单的方法
var view = Backbone.View.extend({
.
. other backbone stuff
.
,menu: '<div> menu </div>'
,render: function(){
var compiledHTML= $(this.menu);
$('selector').append(compiledHTML);
}
});
使用模板的更简单方法
使用插入页面 HTML 中的 HTML 菜单作为使用
. . 你的 html 代码。
.
. end of your html code
.
<script type="text/template" id="marker_small_info_template">
<div> xxx </div>
</script>
</body>
然后在 Backbone 中使用 Jquery 包装它并将其添加到您的页面中所需的位置。
var view = Backbone.View.extend({
,render: function(){
var compiledHTML= _.template( $("#marker_small_info_template").html());
$('selector').append(compiledHTML);
return this;
}
});
复杂而奇特的方式(require.js + 模板)
是将 HTML 代码作为模板(例如 Underscore.template)放在单独的文件中,然后使用 Require.JS 在 Backbone.View 中“编译”它来为我获取它,并使用 JQuery 来包装和添加它。
define([
'text!templates/menuFrenteItem.html'
],
function (templateMenuItem) {
return Backbone.View.extend({
.
.
.
,smallInfo: function(variables){ return _.template(templateMenuItem, variables)}
,render: function(){
var compiledHTML = $(this.smallInfo(dataToCompileTemplate));
$('selector').append(compiledHTML);
return this;
}
}
我认为这是学习在 Javascript 中使用模板并将此工具添加到您的腰带的好机会。
于 2012-10-10T10:53:41.693 回答
0
您应该使用 Backbone 视图,并让路由器渲染它:
http://jsfiddle.net/rd13/g3U7j/11/
var MyView = Backbone.View.extend({
el: '.container',
template: "<menu><li>Item</li></menu>",
render: function() {
this.el.innerHTML = this.template;
return this;
}
});
var r = Backbone.Router.extend({
routes: {
'': 'default'
},
default: function() {
new MyView().render();
}
});
var router = new r();
Backbone.history.start();
于 2012-10-10T10:52:15.733 回答