Я получаю сообщение об ошибке, когда var campaign = new CampaginModel() не получает модель.
Использование require.js + basebone:
Ошибка:
Uncaught TypeError: Object [object Object] не имеет метода 'fetch'
Когда я console.log(CampaginModel)
объект console.log(CampaginModel)
я получаю function(){return i.apply(this,arguments)}
которая абсолютно неверна, так как она должна быть экземпляром модели.
Что я тут сделал?
Модель (модели /CampaginModel):
define([
'underscore',
'backbone'
], function(_, Backbone) {
var CampaginModel = Backbone.Model.extend({
urlRoot: '/api/v1/campaign/'
});
return CampaginModel;
});
Посмотреть:
define([
'jquery',
'underscore',
'backbone',
'views/RewardView',
'views/FriendRewardView',
'models/CampaginModel',
'text!templates/backbone/portal/campaignTemplate.html'
], function($, _, Backbone, campaignTemplate, CampaginModel){
var CampaginView = Backbone.View.extend({
el: '#campaign-panel',
render: function(options) {
if(options.id){
var campaign = new CampaginModel({id: options.id});
campaign.fetch({
success: function(campaign){
}// end success
}); // end fetch
}// end if option.id
} // end render function
}); // end campagin view
return CampaginView;
});
main.js:
require.config({
shim: {
underscore: {
exports: '_'
},
backbone: {
deps: ['underscore', 'jquery'],
exports: 'Backbone',
init: function (_, $) { Backbone.$ = $; return Backbone; }
}
},
paths: {
jquery: '//cdnjs.cloudflare.com/ajax/libs/jquery/2.0.3/jquery.min',
underscore: '//cdnjs.cloudflare.com/ajax/libs/underscore.js/1.5.2/underscore-min',
backbone: '//cdnjs.cloudflare.com/ajax/libs/backbone.js/1.1.0/backbone-min',
templates: '/templates/'
}
});
require([
'app'
], function(App){
App.initialize();
});
Ваше определение представления неверно, поскольку вы определяете семь параметров, но передаете только пять функций. Поэтому, когда вы CampaginModel
экземпляр CampaginModel
вас действительно есть экземпляр представлений views/FriendRewardView
. Поэтому измените свое определение следующим образом:
define([
'jquery',
'underscore',
'backbone',
'views/RewardView',
'views/FriendRewardView',
'models/CampaginModel',
'text!templates/backbone/portal/campaignTemplate.html'
], function($, _, Backbone, rewardView, friendRewardView, CampaginModel, campaignTemplate){
});
Приветствия.
views/FriendRewardView
поэтому она присваивается вашему пятому параметру, который являетсяCampaginModel
.