2013-09-30 1 views

Répondre

1

Si vous utilisez quelque chose comme ceci:

App.ItemsRoute = Ember.Route.extend({ 
    model: function() { 
     return this.store.find('items'); 
    } 
}); 

Le store.find retourne une instance Ember.PromiseProxyMixin, de sorte que vous pouvez observer la isFulfilled propriété de savoir quand les données sont chargées:

App.ItemsController = Ember.ArrayController.extend({ 
    doSomethingWithTotal: function() {   
     var length = this.get('model.length'); 
     // do something with de length 
    }.observes('model.isFulfilled') 
}); 

Vous aimez cette échantillon http://jsfiddle.net/marciojunior/UeCWV/

+0

J'ai besoin d'accéder à la longueur de l'appareil dans mon contrôleur. Comment y accéder? –

+0

Désolé maintenant je vois, je le mets à jour :) –

+0

Ok @TimJahn J'ai mis à jour, s'il vous plaît donner un coup d'oeil –

0

Vous pouvez demander ArrayController pour la propriété content et il retournera un tableau, qui vous donne accès à length.

Voici un Fiddle mise à jour: http://jsfiddle.net/bYSjD/

App.ItemsController = Ember.ArrayController.extend({ 
    doSomethingWithTotal: function() { 
    return this.get('content.length') 
    }.property('content') 
}); 

La façon dont cela fonctionne est que App.ItemsRoute. model renvoie une promesse pour trouver des éléments, et lorsque cela se termine, une autre méthode de ItemsRoute est appelée: setupController. Ember gère automatiquement setupController pour vous, ce qui remplit un contrôleur avec les données de modèle renvoyées. La propriété content de ItemsController sera définie, ce qui donnera à votre propriété doSomethingWithTotal une valeur réelle.

+0

Que faire si mon contrôleur utilise ObjectController? Ça ne semble pas fonctionner alors. –

+0

Un ObjectController ne contient qu'un seul objet, pas un tableau d'objets. – atsjj

Questions connexes