2013-04-08 1 views
0

Je suis modèle confus sur la façon de mettre en place de récupérer des informations de mon (dynamique) dans ember.jsEmber, en collaboration avec un modèle

Voici mon modèle (fonctionne à ce jour):

App.Router.map(function() { 
     this.resource('calendar', { path: '/calendar/:currentMonth'}); 
}); 

App.CalendarRoute = Ember.Route.extend({ 
    model: function (params) { 
    var obj = { 
     daysList: calendar.getDaysInMonth("2013", params.currentMonth), 
     currentMonth: params.currentMonth 
    }; 
    return obj; 
    } 
}); 

Je veux juste récupérer l'attribut « currentMonth »:

App.CalendarController = Ember.Controller.extend({ 
    next: function() { 
    console.log(this.get('currentMonth')); 
    } 
}); 

Mais je reçois une erreur « non défini ».

Dois-je déclarer explicitement mon modèle (Ember.model.extend()) pour obtenir et définir des valeurs?

Répondre

3

Il y a certains conventions que vous pourriez ne pas être au courant en ce qui concerne la fixation d'un Model dans un Controller.

Dans un Route, le modèle peut être n'importe quel objet ou collection d'objets que vous définissez. Il y a énormément de conventions qui s'appliquent et dans la plupart des cas, vous n'avez pas besoin de spécifier quoi que ce soit car il utilise les noms des différents objets pour se guider dans la construction de la requête et définir le contenu de votre contrôleur dans votre code particulier, vous renvoyez obj comme modèle.

Ember fournit un hook appelé setupController qui définira cet objet dans la propriété content de votre contrôleur. Exemple:

App.CalendarRoute = Ember.Route.extend({ 
    model: function (params) { 
    var obj = { 
     daysList: calendar.getDaysInMonth("2013", params.currentMonth), 
     currentMonth: params.currentMonth 
    }; 
    return obj; 
    }, 
    setupController: function(controller, model) { 
    // model in this case, should be the instance of your "obj" from "model" above 
    controller.set('content', model); 
    } 
}); 

Cela dit, vous devriez essayer console.log(this.get('content.currentMonth'));

Questions connexes