в событии click для PodcastView. Я хотел бы создать несколько новых объектов PodcastItemView. Jquery $ .get работает безупречно, кстати.Создайте новые Backbone Views в событии click Backbone View
Если я запускаю console.debug (this.pinfo) в функции start, я получаю массив JSON моих элементов подкаста (название, desc, url, ...), так что это не проблема. Также он выполняет итерацию x раз через этот массив, так что это тоже работает.
PodcastView = Backbone.View.extend({
tagName: "li",
itemTpl: _.template($("#podcast-item").html()),
events: {
"click .p-click" : "start"
},
initialize: function() {
this.listenTo(this.model, "change", this.render);
},
render: function() {
this.$el.html(this.itemTpl(this.model.toJSON()));
return this;
},
start: function() {
$.get(restUri + "podcast/" + this.model.get("title") + "/items", _.bind(function(data) {
this.pinfo = data;
_.each(this.pinfo, function(o) {
var v = new PodcastItemView({model: o});
$("#podcast-items").append(v.render().el);
}, this);
}));
}
});
Что не работает, однако, является создание новых PodcastItemView и добавить их к # подкастов-элементов. Я получаю следующую ошибку:
TypeError: obj[implementation] is not a function (Backbone.js:225)
Это мой PodcastItemView.
PodcastItemView = Backbone.View.extend({
tagName: "div",
itemTpl: _.template($("#podcast-item-list").html()),
initialize: function() {
this.listenTo(this.model, "change", this.render);
},
render: function() {
this.$el.html(this.itemTpl(this.model.toJSON()));
return this;
}
});
Я благодарен за каждый отзыв или ответ.
В первом примере вместо передачи {model: o} попробуйте пройти {model: new (Backbone.Model.extend()) (o)}. При инициализации метода PodcastItemView вы слушаете change.model, но this.model не является Backbone.Model. Попробуйте и дайте мне знать, если это сработает. –
Мои деньги - это то, что вокруг этой линии в магистральном src есть то, где она настраивает слушателей. 'obj [реализация]' в этом случае означает 'model.on', и поскольку у вас просто простой объект, а не базовая модель, нет' model.on', и именно поэтому вы получаете ошибку – Quince