У меня есть простая ситуация и не могу понять, почему переменная, которую я передаю функции всегда undefined.Магистральная маневровая переменная для просмотра метода
var ProjectItemView = Backbone.Marionette.ItemView.extend({
template: "#ProjectItemTemplate",
initialize: function() {
var id = this.model.get('project_id');
$.getJSON('service/api.php/projects/' + id + '/progress').done(function (data) {
this.renderProgress('4'); //<== pass here
});
},
renderProgress: function (why) {
alert(why); //<== undefined
...
},
...
});
Ожидаю, что оно равно «4». На следующем шаге я хочу передать «данные», но теперь понимаю, что ничего не могу передать.
Я хочу сказать taht 'var _this = this;' и ваше второе решение работает нормально. О первом - я вижу переменную и передаю ее в «sub view» (и это доступно даже в teplateHelper), но subview не является рендерингом и не имеет ошибок. –
Странно, что ошибок нет. Но что происходит заключается в том, что вы, вероятно, передаете 'data' в subview, на которое ссылается ключевое слово' this' JS. Поскольку первый метод не связывает 'this.renderProgress' с представлением' this', то 'this' внутри' renderProgress' не будет включать свойства вашего представления. – seebiscuit