0

単純なオブジェクトのプロパティにアクセスできません。

これは私が実行したときに得られるものですalert(JSON.stringify(user)):

{"username": "david", "biography": "Hello world."}

しかし、これは私が実行したときに得られるものですalert(user.username):

undefined

私もuser["username"]同じ結果で試しました。これは、ハンドルバーを使用するバックボーン アプリケーションのコンテキストにあります。バックボーン部分は次のとおりです。

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);
  }
});

そのような問題の原因は何ですか?

4

3 に答える 3

3

ユーザー オブジェクトがバックボーン モデルの場合は、これを試してください

console.log(user.get('username'));
or
cosole.log(user.attributes.username);
于 2013-06-06T03:09:21.333 に答える
1

これは私のために働いています

   var user = {"username": "david", "biography": "Hello world."};
alert (user.username);
alert (user["username"]);
于 2013-06-06T03:07:48.667 に答える
1

JSON.stringify は toJSON 関数を探し、その戻り値を使用する JSON として使用します。

Backbone はおそらく、そのモデル オブジェクトを使いやすくするために、凝ったコーディングを行っています。彼らは、入れたすべてのがらくたをあなたが欲しがっているとは思わないので、きれいな toJSON() の結果をあなたに提供しました。

@Rayweb_on には残りの答えがあります。

于 2013-06-06T03:09:39.960 に答える