Backbone.js BackboneJS.get()和.at()在.fetch()之后未定义

Backbone.js BackboneJS.get()和.at()在.fetch()之后未定义,backbone.js,collections,get,undefined,Backbone.js,Collections,Get,Undefined,本地主机:3000 [{"idrooms":1,"roomname":"red","occupants":0}, {"idrooms":2,"roomname":"green","occupants":0},{"idrooms":3,"roomname":"blue","occupants":0}, {"idrooms":4,"roomname":"yellow","occupants":0}, {"idrooms":5,"roomname":"purple","occupant

本地主机:3000

[{"idrooms":1,"roomname":"red","occupants":0},    {"idrooms":2,"roomname":"green","occupants":0},{"idrooms":3,"roomname":"blue","occupants":0},   {"idrooms":4,"roomname":"yellow","occupants":0},    {"idrooms":5,"roomname":"purple","occupants":0},{"idrooms":6,"roomname":"cyan","occupants":0}]
            <script src="jslib/jquery.js"></script>
            <script src="jslib/underscore.js"></script>
            <script src="jslib/backbone.js"></script>
            <script>
            // Your code goes here
            var Room = Backbone.Model.extend({
                defaults: {
                idrooms: 0,
                roomname: "default",
                occupants: 0
                }
            });

            var RoomList = Backbone.Collection.extend({
                model: Room,
                url: 'http://localhost:3000'
            });

            var roomlist = new RoomList();
            roomlist.fetch();

            console.log(roomlist);
            console.log(roomlist.at(1));
            console.log(roomlist.get(1));
            </script>
            </body>
            </html>
在客户端,我从迄今为止所知道的基本知识开始: 标题

            <script src="jslib/jquery.js"></script>
            <script src="jslib/underscore.js"></script>
            <script src="jslib/backbone.js"></script>
            <script>
            // Your code goes here
            var Room = Backbone.Model.extend({
                defaults: {
                idrooms: 0,
                roomname: "default",
                occupants: 0
                }
            });

            var RoomList = Backbone.Collection.extend({
                model: Room,
                url: 'http://localhost:3000'
            });

            var roomlist = new RoomList();
            roomlist.fetch();

            console.log(roomlist);
            console.log(roomlist.at(1));
            console.log(roomlist.get(1));
            </script>
            </body>
            </html>
jsonlint说它是有效的json

            <script src="jslib/jquery.js"></script>
            <script src="jslib/underscore.js"></script>
            <script src="jslib/backbone.js"></script>
            <script>
            // Your code goes here
            var Room = Backbone.Model.extend({
                defaults: {
                idrooms: 0,
                roomname: "default",
                occupants: 0
                }
            });

            var RoomList = Backbone.Collection.extend({
                model: Room,
                url: 'http://localhost:3000'
            });

            var roomlist = new RoomList();
            roomlist.fetch();

            console.log(roomlist);
            console.log(roomlist.at(1));
            console.log(roomlist.get(1));
            </script>
            </body>
            </html>

感谢您发布…

此方法是异步的,
fetch
方法是异步的,因此在您使用输出变量时不会对其进行赋值

            <script src="jslib/jquery.js"></script>
            <script src="jslib/underscore.js"></script>
            <script src="jslib/backbone.js"></script>
            <script>
            // Your code goes here
            var Room = Backbone.Model.extend({
                defaults: {
                idrooms: 0,
                roomname: "default",
                occupants: 0
                }
            });

            var RoomList = Backbone.Collection.extend({
                model: Room,
                url: 'http://localhost:3000'
            });

            var roomlist = new RoomList();
            roomlist.fetch();

            console.log(roomlist);
            console.log(roomlist.at(1));
            console.log(roomlist.get(1));
            </script>
            </body>
            </html>
试试这个

            <script src="jslib/jquery.js"></script>
            <script src="jslib/underscore.js"></script>
            <script src="jslib/backbone.js"></script>
            <script>
            // Your code goes here
            var Room = Backbone.Model.extend({
                defaults: {
                idrooms: 0,
                roomname: "default",
                occupants: 0
                }
            });

            var RoomList = Backbone.Collection.extend({
                model: Room,
                url: 'http://localhost:3000'
            });

            var roomlist = new RoomList();
            roomlist.fetch();

            console.log(roomlist);
            console.log(roomlist.at(1));
            console.log(roomlist.get(1));
            </script>
            </body>
            </html>
roomlist.fetch({
    success : function(collection, respone) {
        console.log(collection);
        console.log("collection.at(1)", collection.at(1));
        console.log("collection.get(c0)", collection.get("c0"));        
    }
});