2013-03-11 6 views
0

Bit d'un problème de «concept». J'ai été chargé de créer un écran interne qui affiche des statistiques sur l'entreprise. Je pensais qu'il serait bon d'utiliser un framework frontend (entre backbone et braise en ce moment) MAIS le problème est, que je suis assez limité en termes de ce que le 'serveur de statistiques' peut fournir donc des solutions comme socket.io sont malheureusement pas dans le cadre. Cependant, je pensais que d'avoir une API très simple qui renvoie les statistiques JSON:Statistiques en temps réel?

{ 
    "Bob":{ 
     "xs":5, 
     "turnover":10000, 
     "surveys":5 
    } 
} 

alors je pourrais avoir juste le sondage cadre API chaque seconde ou deux pour les changements. Mais je dois trouver un moyen de détecter lorsqu'une valeur a changé (si une alerte peut apparaître ou quelque chose.)

if(new.value != old.value) alert_function()

Mais cela voudrait dire faire que pour chaque figure unique qui pourrait être gênant. Quelle serait la meilleure façon de faire ce genre de chose en utilisant soit backbone ou ember.js?

Répondre

1

Le backbone fetch API prend en charge une option {update: true} qui déclenche les événements de mise à jour de la collection lorsque les valeurs existantes sont fusionnées dans la collection. Vous pouvez ensuite piéger ces événements de mise à jour et exécuter votre code personnalisé. Exemple du lien doc:

Par exemple, pour chercher une collection, obtenir un « ajouter » événement pour chaque nouveau modèle, et un événement « changement » pour chaque changement modèle existant, sans enlever quoi que ce soit:

mycollection.fetch({update: true, remove: false}) 

Vous pouvez ensuite utiliser backbone events pour que vos vues soient à l'écoute des modifications et effectuent les mises à jour nécessaires. This question a un bon exemple.

Aussi, c'est un peu hors sujet, mais quand j'ai vu votre titre j'ai immédiatement pensé à D3.js. Il est bien adapté à l'interrogation d'une URL JSON et à l'utilisation de transitions pour mettre à jour une visualisation.