我遇到了骨幹問題,雖然所有腳本都已加載,但模型似乎對骨幹不明確。 (我正在使用require來加載主幹和其他JavaScript文件)。Backbone targetModel = undefined
所以每當我做一個collection.fetch我得到這個錯誤在Firebug:
TypeError: targetModel is undefined
當我運行它擁有在這一點上腳本:
if (attrs instanceof Model) {
id = model = attrs;
} else {
id = attrs[targetModel.prototype.idAttribute];
}
當我和我的鼠標懸停
它說: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'
});
最後但並非最不重要的路由器與要求部分:
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);
});
},
這裏是JSON將被取回:
{ 「所有用戶」: [ { 「用戶名」: 「測試儀」, 「郵件列表」: 「1」, 「電子郵件」: 「[email protected]」 },{ 「用戶名」: 「tester2」, 「郵件列表」: 「1」, 「電子郵件」: 「[email protected]」 },{ 「用戶名」: 「tester3」, 「郵件列表」:「0 「, 」email「:」[email protected]「 } ] }
在此先感謝
定義了哪個targetModel? – fbynite
targetModel是一個主幹變量。所以我沒有定義這個。除非你的意思是集合中的「model:OF.UsersMdl」部分? – BonifatiusK
我個人從來沒有聽說過'targetModel'的默認變量,你可以發佈一個鏈接到文檔,它在哪裏被描述? – drax