主干.js/下划线.js错误:没有方法“html”
backbone.js / underscore.js error: has no method 'html'
当我尝试导入如下所示的模板时,我似乎遇到了一堵有骨干的砖墙.js/下划线.js
:<script type="text/template" id="overview_template">
<div>
Sample text
</div>
</script>
错误如下:
Uncaught TypeError: Object #<HTMLDivElement> has no method 'html' navigation.js:356
Backbone.View.extend.render navigation.js:356
Backbone.View.extend.initialize navigation.js:351
g.View backbone-min.js:33 d backbone-min.js:38
(anonymous function) navigation.js:379
f.Callbacks.n jquery-1.7.1.min.js:2
f.Callbacks.o.fireWith jquery-1.7.1.min.js:2
e.extend.ready jquery-1.7.1.min.js:2 c.addEventListener.B
触发错误的代码this.el.html(template);
如下:
var OverviewView = Backbone.View.extend({
el: $('#overview_container'),
initialize: function() {
this.render();
},
render: function() {
var template = _.template( $("#overview_template").html(), {} );
this.el.html(template);
},
defaults: {
tip_of_the_day: 'open',
news: 'open',
recent_presentations: 'open'
},
events: {
"click .overview_subsection_header": "toggleSubsection"
},
toggleSubsection: function (event) {
$(this).parent().find('.overview_subsection_content').toggle();
}
});
var overview_view = new OverviewView();
我不确定是什么原因造成的,但它一直让我发疯。
.html() 方法是 jQuery 对象的方法。当你使用 this.el 时 - 它是一个 DOM 对象。要获取 jQuery 对象,请使用 this.$el(它由 backbone.js jQuery 对象缓存)或 $(this.el)。
因此,您的代码应如下所示:
render: function() {
var template = _.template( $("#overview_template").html(), {} );
this.$el.html(template);
}
或
render: function() {
var template = _.template( $("#overview_template").html(), {} );
$(this.el).html(template);
}
不应该是
this.$el.html(template);
即 jQuery 包装的 el。
您正在尝试将视图连接到现有元素,#overview_container
。但可以肯定的是,视图类是在浏览器初始化 DOM 之前创建的。
由于您的模板存储在 #overview_container
,大概您不希望视图在该元素中呈现?尝试删除视图上的 el
属性,并将视图元素附加到页面中所需的任何位置。
此外,从 render
方法返回 this
是一种 Backbone 约定,以便您可以轻松地呈现和附加元素,如下所示:
$(document.body).append((new OverviewView()).render().el);
如果您愿意,可以在初始化器中render
,但这不是标准做法。
尝试
this.$el.html(template)
而不是
this.el.html(template)
相关文章:
- 在同一个服务工作者中处理service-worker.js有任何影响吗
- Livereload for node.js.有可能吗
- sails.js beforeCreate方法只接收required设置为true的模型属性
- jquery.js和jquery.lite.js有什么区别
- 如何从构造函数中调用js原型方法
- Odoo销售点如何访问模型并使用JS调用方法
- Node.js-异步方法调用问题
- Vue.js 在方法内失去范围
- 当对象从服务器发送到客户端时,JS原型方法消失了
- 下划线.js .map 方法会中断 IE8
- Node.js-有没有一种方法可以访问传递给'setTimeout'使用返回的timeoutObject
- AngularJs,DropZone.Js - 有没有人想出一种方法来将Dropzone传输保留在Angular根范围内
- 三.js - 有没有一种简单的方法来更改 Object3D 的旋转枢轴
- Knob.js-有没有一种方法可以连接表盘,使它们有一个组合的总数
- Sinon JS:有没有一种方法可以在对象参数's在sinon js中的键值
- 有没有类似于Mocha.js的方法在Nightwatch.js中生成动态测试
- Angular JS有没有类似dojo.hitch()的方法?
- js:有没有一种方法可以在不使用锤子管理器的情况下添加自定义触摸识别器?
- Angular JS——有没有什么方法可以动态选择模板?
- Node.js query:是否有方法提示用户自定义大小的数组