Javascript require.js传入模型对象[Object Object]时没有方法';获取';
我的视图中出现一个错误,其中var campaign=new CampaginModel()未获取模型 使用require.js+主干: 错误:Javascript require.js传入模型对象[Object Object]时没有方法';获取';,javascript,jquery,backbone.js,requirejs,Javascript,Jquery,Backbone.js,Requirejs,我的视图中出现一个错误,其中var campaign=new CampaginModel()未获取模型 使用require.js+主干: 错误: define([ 'jquery', 'underscore', 'backbone', 'views/RewardView', 'views/FriendRewardView', 'models/CampaginModel', 'text!templates/backbone/portal/campaignTemplate
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;
});
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();
});
未捕获类型错误:对象[Object Object]没有方法“fetch”
当我控制台输出对象console.log(CampaginModel)
时,我得到function(){return I.apply(this,arguments)}
,这是完全错误的,因为它应该是模型的一个实例
我做错了什么
型号(型号/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;
});
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();
});
main.js:
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;
});
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
时,您真正拥有的是视图views/FrienderWardView
的实例。因此,将您的定义更改如下:
define([
'jquery',
'underscore',
'backbone',
'views/RewardView',
'views/FriendRewardView',
'models/CampaginModel',
'text!templates/backbone/portal/campaignTemplate.html'
], function($, _, Backbone, rewardView, friendRewardView, CampaginModel, campaignTemplate){
});
干杯。我不明白为什么会有FriendRewardView的实例?我通过该视图,因为我可以将其称为CampaginView。您能解释一下许多感谢吗?因为您已经定义了七个依赖项,但只将其中五个作为参数传递给函数,因此这些依赖项是按顺序分配的,您的第五个依赖项是
views/FriendRewardView
,因此它被分配给您的第五个参数CampaginModel
。我不知道它是这样工作的,现在可以工作了,谢谢