2013-10-02 3 views
1

Existe-t-il un moyen d'ajouter des enregistrements à un client model et d'indiquer à Ember que ces enregistrements sont déjà du côté serveur? Ainsi, par exemple, si mon modèle Person a des enregistrements pour "Peter" et "Paul" mais que plus tard le serveur ajoute "Mary" et que mon client en prend connaissance sans aucune sorte de données. J'aimerais que le client ajoute «Mary» d'une manière qui ne causera pas de problèmes d'état avec les interactions suivantes.Mise à jour du modèle client sans actualisation complète

Pour ceux qui doivent connaître le « cas d'utilisation » ... Je suis en train de:

  • ont la première demande à findAll() pour une donnée model pour tirer l'ensemble des données à partir le serveur
  • avoir des requêtes suivantes dans une session appeler une requête AJAX personnalisée qui ne renvoie que des différences au résultat depuis cette dernière demande
  • Je veux être capable de pousser ces différences dans le modèle client sans vriller son "état"

Répondre

0

Parfois, nous créons et mettons à jour des enregistrements EmberData sur le client avec des données à partir de websockets. Dans ce cas, les changements sont déjà sur le serveur, donc nous voulons juste faire les changements sur le client sans changer l'état, etc, exactement comme vous le décrivez.

Lorsque nous créons de nouveaux enregistrements sur le client, nous les push dans le magasin, par exemple:

this.store.push('post', { id: 1, body: 'Ember!' }); 

Et, lorsque nous mettons à jour les enregistrements existants sur le client, nous les update dans le magasin, par exemple:

this.store.update('post', { id: 1, hidden: true }); 
+0

Très bien, merci. BTW, je suis impatient de trouver un peu de temps pour obtenir des websockets dans mon application. Deux questions rapides ... Je ne vois pas de méthode 'update()' sur 'store'. Est-ce que je manque quelque chose? Aussi, par rapport à votre exemple "push", je voulais juste valider que dans le cas d'utilisation "push" vous parlez d'une situation où un nouvel enregistrement est ajouté sur le serveur, la notification au client se fait via websockets, puis le "push" obtient le même résultat côté client. Est-ce correct? – ken

+0

@ken (1) 'update' est une méthode sur' store' dans les dernières versions de EmberData (2) vous avez raison – gerry3

+0

(1) Ok, je le vois dans le code. Ce n'est pas encore fait la documentation. – ken

Questions connexes