требуют. как передать модель в представление (магистраль)

0

Я использую require.js с основой. Мой вопрос: как мне получить.() Мою модель из моего представления. То, что я пробовал, приведен ниже, однако я получаю сообщение об ошибке "Кампания не определена". Я думаю, что я очень близок:

Модель:

define([
  'underscore',
  'backbone'
], function(_, Backbone) {

    var Campagin = Backbone.Model.extend({
       urlRoot: '/api/v1/campaign/'
    });

  return Campagin;

});

Посмотреть:

define([
  'jquery',
  'underscore',
  'backbone',
  'views/RewardView',
  'views/FriendRewardView',
  'models/CampaginModel',
  'text!templates/backbone/portal/campaignTemplate.html'
], function($, _, Backbone, campaignTemplate){


   var CampaginView = Backbone.View.extend({
       el: '#campaign-panel',
        render: function(options) {
            if(options.id){

                var campaign = new Campagin({id: options.id});
                campaign.fetch({
                    success: function(campaign){
                        // We can only get the reward when the campaign reward url is returned.

                        var rewardview = new RewardView();
                        rewardview.render({reward_url: campaign.get('participant_reward')});


                        var friendview = new FriendRewardView();
                        friendview.render({reward_url: campaign.get('friend_reward')});


                        var template = _.template(campaignTemplate, {campaign: campaign});
                        this.$el.html(template);






                    }// end success
                }); // end fetch
            }// end if option.id
        } // end render function
    }); // end campagin view


  return CampaginView;

});
Теги:
requirejs
backbone.js

1 ответ

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

В вашем представлении вы указываете массив зависимостей, которые будут переданы функции определения как аргументы функции, перечисленные в том же порядке, что и порядок в массиве. Но вы только объявили 4 аргумента: $ (jQuery), _ (underscore), Backbone и campaignTemplate (что неверно, поскольку согласно вашим зависимостям должен быть RewardView). Поэтому вы должны правильно заявить о своих функциях. Например:

define([
  'jquery',
  'underscore',
  'backbone',
  'views/RewardView',
  'views/FriendRewardView',
  'models/CampaginModel',
  'text!templates/backbone/portal/campaignTemplate.html'
], function($, _, Backbone, RewardView, FriendRewardView, Campagin, campaignTemplate){

   ...
}

Проверьте документацию Требовать JS для получения дополнительной информации.

  • 0
    круто спасибо понял

Ещё вопросы

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