我无法访问简单对象的属性。
这是我运行alert(JSON.stringify(user))
时所得到的:
{"username": "david", "biography": "Hello world."}
但这是我运行alert(user.username)
时所得到的:
undefined
我也尝试了user["username"]
同样的结果。这是在使用Handlebars的Backbone应用程序的上下文中。这是Backbone部分:
var User = Backbone.Model.extend({
urlRoot: 'http://api.example.com/user',
});
var Router = Backbone.Router.extend({
routes: {
":username": "profile"
},
profile: function (username) {
var user = new User({id: username});
user.fetch({
beforeSend: authenticate,
success: function() {
var profile = new Profile({user: user});
profile.render();
}
});
}
});
var Profile = Backbone.View.extend({
render: function() {
var source = $("#profile").html();
var template = Handlebars.compile(source);
user = this.options.user;
var html = template(user);
$("#content section").html(html);
}
});
可能是什么原因引起了这样的问题?
答案 0 :(得分:3)
如果您的用户对象是骨干模型,那么试试这个
console.log(user.get('username'));
or
cosole.log(user.attributes.username);
答案 1 :(得分:1)
这对我有用
var user = {"username": "david", "biography": "Hello world."};
alert (user.username);
alert (user["username"]);
答案 2 :(得分:1)
JSON.stringify将查找toJSON函数,并使用它的返回值作为它使用的JSON。
Backbone可能会进行一些奇特的编码,以便更容易地使用其模型对象。因为他们认为你不想要他们放入的所有垃圾,所以他们为你提供了一个干净的toJSON()结果。
@Rayweb_on得到了答案的其余部分。