0

したがって、私の Backbone.js コードは JSON を取得しています... fetch メソッドの成功コールバックでモデルを単純にコンソールアウトしようとしていますが、[オブジェクト、オブジェクト、オブジェクトの代わりに [r、r、r] が返されます。 ]。髪を引っ張る…

var Person = Backbone.Model.extend();
var PersonCollection = Backbone.Collection.extend({    
    model : Person,
    url: 'js/names.json',
    parse: function(data) {
        console.log(data); // <--- this will return what I am looking for
        return data;
    }
});
var PersonView = Backbone.View.extend({
    initialize: function(){
        var self = this;
        self.collection = new PersonCollection();
        self.collection.fetch({success: function() {
            console.log(self.collection.models); // <-- how do I get it here?
        }});
    }                                     
});                               
var newView = new PersonView();

JSON

[
    { "name": "Linda", "birthYear": 1947},
    { "name": "Kat", "birthYear": 1977},
    { "name": "Jen", "birthYear": 1989}
]

編集:コレクション内のカスタム解析メソッドでデータを console.log するときに取得したフェッチの後に同じことが必要です。上記のコードのコメントを参照してください

4

3 に答える 3

0

ここを見ると、コールバック関数にアイテムが渡されることが示唆されます。

users.fetch({
      success: function (users) {
        var template = _.template($('#user-list-template').html(), {users: users.models});
        that.$el.html(template);
      }
    })

したがって、コールバックを微調整すると役立つかもしれません...

于 2013-11-05T23:15:39.713 に答える
0

このコードを試してみて、 toJSON に追加すると、解析関数がログに記録したのと同じオブジェクトがログに記録されるようになりました。同じ出力が得られない場合は、コードの他の部分に問題がある可能性があります。

var Person = Backbone.Model.extend();
var PersonCollection = Backbone.Collection.extend({
    model : Person,
    url: 'js/names.json',
    parse: function(data) {
        console.log(data); // <--- this return array of name objects
        return data;
    }
});
var PersonView = Backbone.View.extend({
    initialize: function(){
        var self = this;
        self.collection = new PersonCollection();
        self.collection.fetch({success: function() {
            console.log(self.collection.toJSON()); // <-- even this return array of name objects
        }});
    }
});
var newView = new PersonView();
于 2013-11-06T06:15:04.637 に答える
0

あなたは混乱しています。コレクション内のモデルは、コレクションに与える JSON に直接似ているものではなく、レコードをラップするバックボーン モデルです。それが必要な場合は、 を検討してconsole.log(JSON.stringify(self.collection))ください。

于 2013-11-05T22:41:31.707 に答える