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