Использование магистрали и передача параметра в модель

0

Я использую 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;

});
Теги:
backbone.js

1 ответ

1
Лучший ответ

Я не знаю, как выглядит ваша файловая структура.

Но это должно быть как-то вроде этого.

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()

  • 0
    Я вижу, я читал это, но всякий раз, когда я пытался, я получал TypeError: Object function () {return i.apply (this, arguments)} не имеет метода 'set'
  • 1
    'models/CampaginModel' ли вы опубликовать свой код в 'models/CampaginModel' , возможно, там что-то не так. Я думаю, что причина в том, что у вас нет var campaginModel = new CampaginModel , не так ли?
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню