Tôi có một bộ định tuyến truy cập bộ sưu tập của nó. Vòng lặp của tôi không lặp qua các mô hình vì vậy tôi đã thử ghi lại bộ sưu tập để xem nó đã trả về cái gì. Hóa ra khi tôi đăng nhập bộ sưu tập trực tiếp tôi thấy tất cả các mô hình như mong đợi. Nhưng nếu tôi cố gắng để đăng nhập các thuộc tính mô hình của bộ sưu tập tôi nhận được một mảng trống! Nó không có ý nghĩa. Những dòng này trực tiếp theo nhau. Tôi đã thử thay đổi thứ tự và nhận được kết quả tương tự.Tại sao backbone.js trả về một mảng trống khi truy cập các mô hình?
console.log(this.collection);
=> Shots
_byCid: Object
_byId: Object
length: 15
models: Array[15]
__proto__: Shots
...
console.log(this.collection.models);
=> []
console.log(this.collection.length);
=> 0
Tại sao điều này lại xảy ra?
Dưới đây là các mã như nó là trong các bộ định tuyến để cung cấp cho một bối cảnh tốt hơn về nơi mã này được bắn:
# Routers
class Draft.Routers.Shots extends Backbone.Router
routes:
'' : 'index'
'shots/:id' : 'show'
initialize: ->
@collection = new Draft.Collections.Shots()
@collection.fetch()
index: ->
console.log @collection
console.log @collection.models
Kết thúc tìm nạp và đặt lại thành công hoặc thêm mô hình vào bộ sưu tập vào thời điểm bạn đã đăng nhập chưa? – user500198
tôi chỉ có thể giả định nó đã làm, 2 bản ghi là ngay sau mỗi khác, nó sẽ là một vấn đề nanoseconds giữa hai cuộc gọi. vẫn có thể mặc dù nhưng nó ít nhất phải là một kết quả không ổn định nếu bạn kiểm tra nó trong một vài lần ... nó không phải lúc nào cũng được hoàn thành tải ngay giữa hai cuộc gọi đăng nhập. – Sander
Tôi không hiểu tại sao nó đã được đăng nhập nhưng tôi phát hiện ra rằng tôi cần phải thêm một người nghe sự kiện vào bộ sưu tập trong khung nhìn để đảm bảo rằng nó đã được tải. –