2012-04-26 4 views
1

est-il possible d'accéder à l'attribut ou à la fonction du modèle Backbone.js en javascript? Si possible comment faire cela ??Accéder au modèle backbone js en javascript

Mon modèle:

var TimeZone = Backbone.Model.extend({ 
    defaults:{ 
     timeZoneID : 'EST5EDT', 
     timeZoneShortForm : "ET", 
     timeZoneLongForm : "Eastern Time", 
    } 
    }); 

Javascript

getTimeZoneId :function(TimeZone)   
    { 
      //here for given TimeZone model.. i have to acess the timeZoneID 
    } 

Maintenant, je dois accéder TimeZoneID .. Comment est-il possible?

Répondre

2

Je suppose que vous essayez d'accéder à une instance de TimeZone:

var timeZone = new TimeZone(); 
timeZone.get('timeZoneID'); 

http://documentcloud.github.com/backbone/#Model-get

+1

Salut, merci pour votre réponse .. oui, l'erreur est que je ne passais pas l'instance .. Merci :) – Jeevi

+0

@Stupid karma est une bonne récompense pour les personnes qui travaillent pour vous aider, je vous recommande "upvote" et/ou "accepter" les réponses que ceux qui vous ont aidé. – fguillen

+0

tu es sur sûr :) – Jeevi

0

Comme ponzano dit, il semble que vous voulez ce qui suit:

getTimeZoneId :function(timeZone){ 
    return timeZone.get('timeZoneID'); 
} 

Notez cependant que l'argument de la fonction timeZone est en minuscules. N'utilisez pas le majuscule, sinon vous le mélangez avec le modèle "class".

Bien sûr, Backbone sine définissent déjà des accesseurs, vous pourriez ne pas avoir besoin de votre fonction supplémentaire du tout ...

De plus, peut-être vous ne devriez pas avoir le var en face de la définition du modèle de telle sorte que il fait partie de l'espace de noms global et de la forme accessible partout dans votre application.

1

Notez que Backbone.js est un framework JavaScript, donc votre modèle Backbone est JavaScript, tout comme votre fonction getTimeZoneId.

Backbone.Model.extend() crée une fonction de constructeur de modèle, avec laquelle vous devez créer des instances (par exemple var mymodel = new TimeZone();).

Il est pas tout à fait clair de votre question de savoir si vous voulez obtenir le timeZoneID d'une instance de modèle, ou la timeZoneID propriété de l'objet defaults de votre modèle objet prototype TimeZone.

Si vous avez une instance TimeZone appelé mymodel, vous pouvez obtenir son TimeZoneID comme ceci:

mymodel.get('timeZoneID'); 

Cependant, vous ne pouvez pas (je ne pense pas) inspecter l'objet defaults de TimeZone. Backbone.Model.extend() renvoie une fonction qui n'expose aucune des propriétés de l'objet que vous lui passez.

Questions connexes