2011-05-12 25 views
5

Tôi có kịch bản tiếp theo:làm thế nào để có được mô hình từ bộ sưu tập

var Game = Backbone.Model.extend({}); 

var GamesCollection = Backbone.Collection.extend({ 
    model: Game 
}); 

var games = new GamesCollection(); 

var portal = new Game({name: 'Tetris', year: '2017'}); 
games.add(portal); 

console.log(games.get(0)); 

Tại sao "games.get (0)" return 'undefined'? Tôi có thể sử dụng phương thức nhận không đúng cách không?

Trả lời

8

ngắn và ngọt ngào, bạn cần:

games.at(0) 

.get là cho các thuộc tính.

5

AFAICT get() trên các mô hình là cho các thuộc tính, nhưng trong trường hợp của bạn, bạn đang đối phó với một bộ sưu tập, có nghĩa get() là: "Nhận một mô hình từ một bộ sưu tập, theo quy định của id"

Ví dụ:

collection.get(1); // Get model with id = 1 from collection 

Vì bạn chưa cung cấp id khi bạn tạo trò chơi Tetris mới, xương sống sẽ tự tạo một id, có thể không phải là "0".

Tuy nhiên trong trường hợp của bạn at(index) dường như là một trong những bạn tìm kiếm, câu trả lời của tôi chỉ là để làm rõ mọi thứ.

Ví dụ:

collection.at(0); // Get model at collection index 0 
+0

Đây là câu trả lời chính xác nhất. Một cái khác như nó là, bỏ lỡ điểm rất quan trọng là các bộ sưu tập cũng có một hàm '.get (id)'. – jmk2142

+0

Đây là một câu trả lời tuyệt vời, nhưng tôi không thể tìm ra cách gọi một phương thức trên mô hình trả về. Tôi cho rằng tôi có thể làm điều gì đó như: 'collection.at (0) .methodName();' Nhưng không xác định. Bất kỳ ý tưởng về những gì tôi đang làm sai? – dug

+0

Đã tìm ra. Nó thực sự đã hoạt động chính xác, chính phương thức đó không trả lại bất cứ thứ gì vì vậy khi tôi đăng nhập, tôi sẽ nhận được 'không xác định', điều mà tôi đã thực hiện có nghĩa là nó không tìm ra phương thức. Nó chỉ không nhận được bất cứ điều gì trở lại _from_ phương pháp. – dug

Các vấn đề liên quan