虽然所有脚本都已加载,但是我遇到了使用骨干的问题,其中模型似乎未定义为骨干.(我使用require来加载主干和其他javascript文件).
所以每当我做一个collection.fetch,我在firebug中得到这个错误:
TypeError: targetModel is undefined
当我运行脚本时,它在此时保持:
if (attrs instanceof Model) { id = model = attrs; } else { id = attrs[targetModel.prototype.idAttribute]; }
当我用鼠标悬停在targetModel上时,它说:undefined它现在似乎不起作用,我唯一做的就是改变我的html模板,它只在collection.fetch之后加载.
你能帮帮我吗?
这是我的模型:
var OF = OF || {}; OF.UsersMdl = Backbone.Model.extend({ default: { username: '', mailinglist: '', email: '' }, initialize: function() { // }, result: { success: false, message: '' }, validate: function(att) { } });
这是集合:
var OF = OF || {}; OF.UsersCollection = Backbone.Collection.extend({ initialize: function() { // }, parse: function(data){ return data["all-users"]; }, model: OF.UsersMdl, url: 'php/api/users' });
最后但并非最不重要的是带有require部分的路由器:
goToUsers: function() { require(['./models/users', './views/users_view', './collections/user_collection'], function(UsersMdl, UsersView, UsersCollection) { OF.usersMdl = new OF.UsersMdl; OF.usersCollection = new OF.UsersCollection; OF.usersView = new OF.UsersView; //when the collection is fetched $.when(OF.usersCollection.fetch({ data: { "admin": OF.login.attributes.admin, "session": OF.login.attributes.session }, success: function(){ //console.log(OF.usersCollection.length); } //then render the view })).then(function(){ OF.usersView.render(); }, 300); }); },
以下是将通过fetch进行检索的JSON:
{"all-users":[{"username":"tester","mailinglist":"1","email":"tester@tester.test"},{"username":"tester2","mailinglist" :"1","email":"tester2 @tes.test"},{"username":"tester3","mailinglist":"0","email":"tester3@tester.test"}]}
提前致谢