Я использую backbone.marionette для управления представлением.
Моя проблема: "Как передать параметр модели?"
Вот что я пробовал:
define([
'jquery',
'underscore',
'backbone',
'models/CampaginModel',
'collections/CampaignCollection',
'text!templates/includes/_campaign.html'
], function ($, _, Backbone, CampaginModel, CampaignCollection, campaignTemplate) {
var campaginView = Backbone.Marionette.ItemView.extend({
template: campaignTemplate,
initialize: function (options) {
this.campaign_id = options.id;
},
model: CampaginModel({id: this.campaign_id}),
onRender: function () {
}
}); // end campagin view
return campaginView;
});
Я заметил, что мой параметр передается в функцию инициализации представления, которую я как бы застрял после этой точки. В стандартной магистрали я только что создал новую модель в функции рендеринга и таким образом передал параметр модели. Однако у марионеток есть атрибут "model", который, я думаю, должен позволить мне пройти там, но это не так!
Модель:
define([
'underscore',
'backbone',
'jquery'
], function (_, Backbone, jquery) {
var CampaginModel = Backbone.Model.extend({
urlRoot: '/api/v1/campaign/',
// Model Constructor
initialize: function () {
},
});
return CampaginModel;
});
Я не знаю, как выглядит ваша файловая структура.
Но это должно быть как-то вроде этого.
define([
'jquery',
'underscore',
'backbone',
'models/CampaginModel',
'collections/CampaignCollection',
'text!templates/includes/_campaign.html'
], function ($, _, Backbone, CampaginModel, CampaignCollection, campaignTemplate) {
var campaginView = Backbone.Marionette.ItemView.extend({
template: campaignTemplate,
initialize: function (options) {
this.campaign_id = options.id;
this.model.set({id: this.campaign_id});
},
model: CampaginModel,
onRender: function () {
}
}); // end campagin view
return campaginView;
});
Я еще не тестировал код.
Если вам нужно задать параметры для модели, вам необходимо использовать model.set()
backbone model.set()
'models/CampaginModel'
ли вы опубликовать свой код в'models/CampaginModel'
, возможно, там что-то не так. Я думаю, что причина в том, что у вас нетvar campaginModel = new CampaginModel
, не так ли?