Как привязать Marionette.ItemView к существующему элементу страницы вместо передачи шаблона?

Наше приложение использует шаблоны Mustache в index.mustache и выполняет первоначальный вызов API с помощью Symfony вместо использования Backbone. Это делается для того, чтобы пользователь не смотрел на пустой экран при начальной загрузке страницы.

Теперь, как мы можем использовать Marionette впоследствии для привязки к отображаемым элементам страницы в DOM (чтобы мы могли манипулировать данными и добавлять интерактивность) вместо передачи нового шаблона?

Насколько показывают наши исследования, нам всегда нужно передавать шаблон в Marionette Layout и ItemView, иначе мы получим «ошибку отсутствия шаблона».

Есть ли свойство el, которое мы можем использовать, как в Backbone? Другим вариантом было бы расширить Marionette.View, но делать это не рекомендуется.


person Elmar Gasimov    schedule 22.08.2013    source источник


Ответы (1)


Вы просто должны создать экземпляр представления без рендеринга. http://jsfiddle.net/vpetrychuk/PkNTp/

var ItemView = Backbone.Marionette.ItemView.extend({
    el : '.content',
    events : {
        'click' : 'clickHandler'
    },
    clickHandler : function () {
        this.$el.append('clickHandler');
    }
});

new ItemView();
person Vitalii Petrychuk    schedule 22.08.2013
comment
Я понятия не имею, что я делал неправильно. Теперь это работает... Странно. Спасибо Виталий! - person Elmar Gasimov; 22.08.2013
comment
Я бы предложил одно небольшое изменение: не вставляйте el в само представление. Это вызовет головную боль позже. Вместо этого передайте el в опции конструктора: new ItemView({el: ".content"}); - person Derick Bailey; 22.08.2013
comment
@DerickBailey Спасибо за совет, да, это, безусловно, более пригодно для повторного использования. Большой поклонник Marionette BTW! :) - person Elmar Gasimov; 22.08.2013
comment
Если вы не визуализируете, у вас все еще будет доступ к объекту «ui»? - person earl3s; 17.09.2013
comment
@earl3s, как я провел расследование, это не инициализировано :( - person KSDaemon; 05.12.2013
comment
@earl3s, вы можете увидеть stackoverflow .com/questions/15312075/ для получения дополнительной информации - person KSDaemon; 05.12.2013