2012-08-06 15 views
5

Sé que más a menudo se realiza en el sentido contrario, pero en mi caso de uso específico que había necesidad de contar con un modelo PostsTimes con una referencia a una colección (de otro modelo Publicación). En este momento estoy tratando:Backbone: ¿cómo hacer referencia a que una colección de un modelo

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

Pero this.posts en PostsTimes mantiene siempre undefined. ¿Hay alguna forma de que pueda hacer esto sin definir una variable global?

+0

lo que es 'Tampon.posts'? algunos datos o la otra colección? –

+0

@ClaudiuHojda Lo siento, eso es un error tipográfico. Arreglando en este momento. –

Respuesta

4

La estructura de lo que tiene es correcta, por lo que la razón por la que estaría registrando undefined es porque el this en su función test es algo más que la instancia del modelo.

Así que su PostsTimes se convertiría en

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

Bueno, no, esa es la cuestión, el Modelo no forma parte de la Colección (haré la pregunta más clara) –

+0

@julien_c Lo siento, lo malentendí, edité mi respuesta para reflejar esto. –

+0

¡Esto fue todo, gracias! Siempre me olvido de esto ... ¿No podrían los métodos de instancia estar vinculados a la instancia por defecto? –

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