我有以下代码:
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();
});
我缺少什么?
答案 0 :(得分:0)
如果您执行new myApp.Models.User();
,则会创建一个新的空User
..它怎么会有属性..
您没有指定ID,所以如何从服务器获取?
并且您没有指定默认值..
所以这对我来说似乎是连贯的,不是吗?
答案 1 :(得分:0)
这是一个异步问题。 Fetch正在进行异步Ajax调用,它将返回但尚未设置任何值。做那样的事情:
this.currentUser.bind("change:id", function(){
//your console logs
});
当获取成功并且在模型上设置了id时,将调用日志。