Другой вопрос магистра.
Вид, упомянутый ниже, отображает штраф.
Однако при нажатии на ссылку, следующая строка не получает казнены:
console.log($(e.currentTarget).data("id"));
Но возвращает сообщение вместо (поэтому событие срабатывает должным образом):
Uncaught TypeError: undefined is not a function
Это мнение:
define([
'jQuery',
'marionette',
'handlebars',
'text',
'text!templates/main_menu.html',
], function ($, Marionette, Handlebars, Text, Main_menu_tpl) {
'use strict';
var Main_MenuView = Marionette.ItemView.extend({
template: Handlebars.compile(Main_menu_tpl),
events: {
'click .main_menu_item':'select_menu'
},
select_menu: function(e){
e.preventDefault();
//Here is the problem
console.log($(e.currentTarget).data("id"));
},
render: function() {
var wrapper = {models: this.collection.toJSON()};
this.$el.html(this.template(wrapper));
return this;
}
});
return Main_MenuView;
});
шаблон выглядит следующим образом:
<ul id="main-menu">
{{#each models}}
<li><a data-id="{{id}}" href="{{href}}" class='main_menu_item'">{{label}}</a></li>
{{/each}}
</ul>
Мог вы создаете для этого смысл? Я вижу, что вы используете «Marionette.ItemView», есть ли причина, по которой вы не используете 'Marionette.CollectionView' или' Marionette.CompositeView' для обработки коллекции? –
@AlbertoZaccagni Я создал этот сущность с моим исходным кодом: https://gist.github.com/anonymous/7527170. Я не очень разбираюсь в этом, поэтому извините, если он не соответствует определенным соглашениям. Что касается Collection/CompositeView: я рассмотрю это сейчас, так как я нахожусь на этапе обучения. Я не знаю, сможет ли он решить мою проблему с событием клика. Спасибо – Trace
К сожалению, я имел в виду jsfiddle, извините. Таким образом, мы могли видеть это в действии, это трудно только из исходного кода. –