Я пытаюсь настроить приложение базовой линии. Этот код ниже дает следующее сообщение об ошибке:Магистраль 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'-property, поэтому я предполагал, что это должно работать нормально. Почему я должен снова использовать нотацию jQuery для этого, например. $ (this.el), а не this.el
Большое спасибо!
На самом деле поставляет узел DOM в самом зрения на жесткое кодирование в ID делает код явно менее многоразовые. Магистраль автоматически устанавливает 'this.el' для вас, если вы передадите его в свой конструктор представлений (инверсия элемента управления), а также поможет вам в написании тестов для вашего кода, поскольку вы можете использовать элемент HTML, а не узел DOM. 'var myView = новый MyView ({el: '#container'}); // Будет иметь такое же влияние ' – phawk