要求不传递骨干模型ID

时间:2013-11-11 11:48:42

标签: javascript jquery backbone.js requirejs

由于我已经使用主干切换到我的应用程序的require.js,似乎我的模型不再获取或将ID添加到URL中。

  var campaign = new CampaginModel({id: options.id});

当我控制模型时,网址为/api/campaign/之前的/api/campaign/1/

我做错了什么?

查看:

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



   var CampaginView = Backbone.View.extend({
       el: '#campaign-panel',

        // View constructor
        initialize: function() {
            // Storing the View context
            self = this;
        },


        render: function(options) {
            if(options.id){


                var campaign = new CampaginModel({id: options.id});

                console.log('model', campaign)

                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

                    ,

                    error: function (model, response) {
                      console.log('error', model, response);
                    }// end of error

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


  return CampaginView;

});

型号:

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

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

  return CampaginModel;

});

1 个答案:

答案 0 :(得分:1)

这不是require.js问题。您正在定义urlRoot,因此“覆盖”“[collection.url] / [id]”形式的默认URL,因此您必须将idAttribute添加到您的定义中:

var CampaginModel = Backbone.Model.extend({
   urlRoot: '/api/v1/campaign/',
   idAtttribute: 'id'
});

干杯。

相关问题