2012-08-06 27 views
5

Tôi biết nó thường xuyên hơn làm theo cách ngược lại, nhưng trong trường hợp sử dụng cụ thể của tôi, tôi sẽ cần phải có một mô hình PostsTimes với một tham chiếu đến một Bộ sưu tập (của một Mô hình khác Đăng). Ngay bây giờ tôi đang cố gắng:Backbone: làm thế nào tôi có thể tham khảo một Bộ sưu tập từ một mô hình

var Posts = Backbone.Collection.extend({ 
    model: Post 
}); 
var posts = new Posts(); // my collection 



var PostsTimes = Backbone.Model.extend({ 
    url: "api/times.php", 
    initialize: function(options){ 
     this.posts = options.posts; 
    }, 
    test: function(){ 
     console.log(this.posts); 
    } 
}); 

var poststimes = new PostsTimes({posts: posts}); 

Nhưng this.posts trong PostsTimes luôn vẫn undefined. Có cách nào tôi có thể làm điều này mà không xác định một biến toàn cầu?

+0

gì là 'Tampon.posts'? một số dữ liệu hoặc bộ sưu tập khác? –

+0

@ClaudiuHojda Xin lỗi, đó là lỗi đánh máy. Sửa chữa nó ngay bây giờ. –

Trả lời

4

Cấu trúc của những gì bạn có là chính xác, vì vậy lý do nó sẽ ghi nhật ký undefined là bởi vì this trong hàm test của bạn không phải là trường hợp của mô hình.

Vì vậy, bạn sẽ trở thành PostsTimes

var PostsTimes = Backbone.Model.extend({ 
    url: "api/times.php", 
    initialize: function(options){ 
     _.bindAll(this); 
     this.posts = options.posts; 
    }, 
    test: function(){ 
     console.log(this.posts); 
    } 
}); 
+0

Vâng, không, đó là điều, Mô hình không phải là một phần của Bộ sưu tập (Tôi sẽ làm cho câu hỏi rõ ràng hơn) –

+0

@julien_c Xin lỗi tôi hiểu lầm, tôi đã chỉnh sửa câu trả lời của tôi để phản ánh điều này. –

+0

Đây là nó, cảm ơn! Tôi luôn luôn quên về điều này gotcha ... Ví dụ không thể các phương pháp được ràng buộc với dụ theo mặc định? –

1
var PostsTimes = Backbone.Model.extend({ 
    url: "api/times.php", 
    initialize: function(options){ 
    _.bindAll(this, 'test'); 
    this.posts = options.posts; 
    }, 
    test: function(){ 
    console.log(this.posts); 
    } 
}); 
Các vấn đề liên quan