У меня есть что-то вроде этого:Неожиданное поведение при расширении ItemView в Backbone марионеток
MyView = Backbone.Marionette.ItemView.extend({
templateHelpers: function() {
return {
imageName: function() {
var img = this.name.toLowerCase().replace(" ", "_");
return img;
}
}
},
myFunc: function() {//something}
//lots of other stuff
})
MySecondView = MyView.extend({
myFunc: function() {//something}
})
Мотивом для этого является то, что я хочу переписана функция MyFunc во втором использовании ItemView, но в противном случае это то же самое.
Проблема, которую я нахожу, заключается в том, что я должен повторно объявить свойство templateHelpers в MySecondView - в противном случае я получаю сообщение об ошибке с именем imageName(). Я этого не ожидал. Если я «продюсирую», он, безусловно, должен быть там. Но, тогда, я не уверен, что такое «расширение». Я не думаю, что это расширение jQuery.
Спасибо. Я вижу логику. Но это не исправить. Функция initialize вызывается в MySecondView, но ошибка (не может найти templateHelper) возникает до того, как инициализация запускается в «parent». Инициализация никогда не запускается родителем. –
А я вижу, что это особый случай из-за того, как работает марионетка. Я уточню свой ответ. – dcarson
templateHelpers не существует на прототипе MyView в точке, где templateHelpers вызывается в MySecondView. (Опять, инициализация еще не была вызвана в MyView?) ... Нужно ли мне что-то делать в MyView, чтобы сделать так, чтобы на нее накладывался templateHelpers - как и мои пользовательские функции? –