2012-08-06 61 views
5

我知道這是更經常以相反的方式進行,但在我的具體使用情況下,我需要有一個型號PostsTimes一起集的引用(另一種型號)。現在,我想:骨幹:我怎麼可以參考集合從模型

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}); 

this.postsPostsTimes始終保持undefined。有沒有什麼辦法可以做到這一點,而無需定義全局變量?

+0

是什麼'Tampon.posts'?一些數據或其他收集? – 2012-08-06 15:53:21

+0

@ClaudiuHojda對不起,這是一個錯字。現在解決它。 – 2012-08-06 15:55:36

回答

4

你擁有的結構是正確的,所以它會記錄undefined的原因是因爲你的test函數中的this是模型實例以外的東西。

所以你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

嗯,不,這是事情,模型不是集合的一部分(我會讓問題更清楚) – 2012-08-06 15:52:25

+0

@julien_c對不起,我誤解了,我編輯了我的答案以反映這一點。 – 2012-08-06 15:57:12

+0

這就是它,謝謝!我總是忘記這個問題...默認情況下,實例方法不能綁定到實例嗎? – 2012-08-06 16:07:32

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); 
    } 
});