2
我正在尝试设置Backbone应用程序。下面这段代码给予以下错误:Backbone this.el jQuery
Uncaught TypeError: Object # has no method 'append'
define(
[
'jQuery',
'Underscore',
'Backbone',
'text!templates/start.html'
],
function ($, _, Backbone, startTemplate)
{
var StartView = Backbone.View.extend({
// properties
el: $('#container'),
initialize: function()
{
this.render();
},
render: function()
{
var template = _.template(startTemplate);
this.el.append(template);
}
});
return new StartView;
}
);
但这个工作(见 'render'功能):
define(
[
'jQuery',
'Underscore',
'Backbone',
'text!templates/start.html'
],
function ($, _, Backbone, startTemplate)
{
var StartView = Backbone.View.extend({
// properties
el: $('#container'),
initialize: function()
{
this.render();
},
render: function()
{
var template = _.template(startTemplate);
$(this.el).append(template);
}
});
return new StartView;
}
);
我传递$(' #集装箱')作为'el'属性,所以我认为这应该工作得很好。为什么我必须为这个例子再次使用jQuery符号。 $(this.el)而不是this.el
很多很多很多预先感谢!
通过硬编码的ID使代码demonstrably少重复使用实际上提供的视图本身的DOM节点。如果你将它传递给你的视图构造器(控制反转)并且帮助你为你的代码编写测试,Backbone自动为你设置'this.el',因为你可以使用HTML元素而不是DOM节点。 'var myView = new MyView({el:'#container'}); //会产生同样的影响' – phawk