我有以下代码:
var myApp = {
Models: {},
Views: {},
Collections: {},
Controllers: {},
init: function() {
new this.Controllers.Main();
Backbone.history.start();
}
}
myApp.Models.User = Backbone.Model.extend({
idAttribute : '_id',
url : 'currentUser',
initialize : function() {
this.fetch();
}
});
myApp.Controllers.Main = Backbone.Controller.extend({
initialize: function() {
this.currentUser = new myApp.Models.User();
},
routes: {
'' : 'index',
},
index: function() {
console.log('index called');
console.log(this.currentUser); // shows the correct object
console.log(this.currentUser.attributes); // empty object ?
console.log(this.currentUser.toJSON()); // empty object ?
console.log(this.currentUser.get('name')); // undefined ?
}
});
$(function() {
myApp.init();
});
我错过了什么?
最佳答案
这是一个异步问题。 Fetch 正在执行异步 Ajax 调用,它将返回,但尚未设置任何值。做类似的事情:
this.currentUser.bind("change:id", function(){
//your console logs
});
当获取成功并且在模型上设置了 id 时,将调用日志。
关于javascript - 我的代码中出现意外行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5919950/