2013-11-07 4 views
0

У меня есть представление коллекции, и каждый элемент представляет собой составной вид, который также имеет вид элемента. Я хочу прослушать события из этого последнего (суб-суб) элемента.Прослушать суб-суб-представления в македонной макете

View.Block = Marionette.Layout.extend({ 
    triggers: { 
     'click .content': 'block:click' 
    } 
}); 

View.Category = Marionette.CompositeView.extend({ 
    itemView: View.Block 
}); 

View.Categories = Marionette.CollectionView.extend({ 
    itemView: View.Category 
}); 

В моем контроллере у меня есть только ссылка на View.Categories:

var categories_view = new View.Categories({ 
    collection: categories 
}); 

Можно ли прослушивать событие нажатия от View.Block с помощью марионеток встроенного просмотра событий? Я пробовал categories_view.on('itemview:block:click'), но это не сработает, так как View.Block - это не вид элемента View.Categories, а View.Category.

ответ

1

Вы должны будете использовать модульно или на уровне приложений агрегатор событий для достижения своей цели: (. myApp является экземпляром приложения марионеток)

events: { 
    "click .something": "triggerEvent" 
}, 

triggerEvent: function(e){ 
    myApp.trigger("something:clicked", e); 
} 

Тогда слушайте, что событие:

myApp.on("something:clicked", function(e){ 
    e.preventDefault(); 
    console.log("something was clicked"); 
}); 
+0

Спасибо, это действительно так, как я в настоящее время заработал. Я просто надеялся/подумал о решении, используя события просмотра Marionette. – emwee

+0

Дело в том, что события просмотра только отправляются непосредственному родителю. Поскольку место, которое вы хотите прослушать, более удалено, вам нужно будет использовать агрегатор событий. –

+0

'myApp, trigger' - это опечатка ..? –

Смежные вопросы