42 votes

ember.js et le serveur

Je suis à la recherche d'Ember.js et ont été la lecture de la documentation pour essayer de bien comprendre comment l'utiliser. - Je l'obtenir (assez bien), sauf pour une chose. Pour ma façon de penser dans le modèle MVC, le Modèle est le référentiel pour les données de l'application. Je peux voir comment cela fonctionne pour le côté client de données dans Ember.js. Ce que je ne comprends pas c'est comment la cravate que les données sur le serveur de sorte que si les modifications des données sur le client, les modifications sont mises à jour dans le serveur. Et vice-versa. J'ai fait cela par mon web des applications Ajax/JSON appels d'avant en arrière pour le serveur, je suis tout simplement pas l'obtenir comment faire à l'aide d'Ember.js.

51voto

gryzzly Points 7144

Creuser un peu autour de emberjs sur GitHub , j'ai trouvé ceci: https://github.com/emberjs/data:

Braise de Données est une bibliothèque pour le chargement de modèles à partir d'une couche de persistance (comme une API JSON), la mise à jour de ces modèles, puis enregistrer les modifications. Il offre de nombreuses installations que vous pouvez trouver dans côté serveur Orm comme ActiveRecord, mais est conçu spécifiquement pour l'environnement unique de JavaScript dans le navigateur.

Je voudrais aussi suggérer la lecture Ember.js Collections Vivantes. Ce que vous voulez est d'avoir une collection de modèles qui sauront synchronisation avec le serveur côté, possible exemple de code est:

// our model
App.Person = Ember.Object.extend();

App.people = Ember.ArrayController.create({
  content: [],
  save: function () {
    // assuming you are using jQuery, but could be other AJAX/DOM framework
    $.post({
      url: "/people",
      data: JSON.stringify( this.toArray() ),
      success: function ( data ) {
        // your data should already be rendered with latest changes
        // however, you might want to change status from something to "saved" etc.
      }
    });
  }
});

Vous devez ensuite appeler App.people.save() à besoin d'occasions.

Veillez également à consulter cet article, des Conseils et une formation dans l'Utilisation De Ember.js, qui va plus loin dans la communication serveur-client avec de Braise et mentionne également emberjs/données.

Note: Emberjs de la Bibliothèque de Données doit être utilisé avec prudence pour le fait qu'il n'est pas prêt pour la production.

6voto

Peter Behr Points 114

Dans Ember.js le "modèle" figurant dans l' Ember objet contient une autre abstraction d'un sous-jacent de côté de serveur de base de données, si vous en utilisez un. Le contrôleur de la partie de l'application doit alors disposer de méthodes qui vous permettent de récupérer et d'envoyer des données qui sont appelés lorsque nécessaire afin de mettre à jour le modèle (à l'aide d'Ajax). C'est bien parce que vous avez un modèle qui peut répondre rapidement sur le côté client pour toute entrée d'un utilisateur permet à l'application (les frappes au clavier, les mouvements de la souris, peu importe) et de choisir le moment de faire relativement coûteux requêtes à un serveur de base de données côté, par exemple. De cette façon, certains de la performance de l'application n'est plus entravée par la latence de demandes de données à un serveur externe, qui dans certains cas peut vous permettre de créer des applications dont la réactivité des approches que des applications natives.

5voto

Ronald Points 51

J'aime l'image Ember.js dans les paires comme ce

  • Les vues et les Modèles sont corrélés (évidemment), d'ajuster le point de Vue de la Classe de contrôle du Modèle (comme les noms de classe)
  • Routeur et les Itinéraires de travailler un peu comme le contrôleur MVC. Ils sont responsables de routage de la requête vers le bon point de terminaison
  • Contrôleur et le numéro de Modèle de modèle centré sur l', l'un (le Modèle) décrit les données que vous allez gérer dans votre application, tandis que le contrôleur se comporte comme une sorte de proxy (ou le décorateur, si ce n'est plus de votre allée). Modèles de crochet pour le contrôleur, par exemple, et

Fondamentalement cela signifie que vous charger de votre contrôleur (simple ou un tableau) avec un modèle et vous pouvez maintenant facilement modéliser les processus de travail sur ce modèle (c'est à dire les trucs qui ne touche pas le modèle de base de données/) dans votre contrôleur. Pour un exemple d'application de blog vous décrire le Poste dans le modèle et ajouter quelque chose comme ça pour le contrôleur

App.PostController = Ember.ObjectController.extend({
  content: null,

  // initial value
  isExpanded: false,

  expand: function() {
    this.set('isExpanded', true)
  },

  contract: function() {
    this.set('isExpanded', false)
  }
});

Maintenant, vous pouvez interagir avec la represenation du modèle en termes de frontend pensée par le contrôleur. L'expansion d'un poste ou pas ne change pas le modèle, en changeant uniquement les données ne.

En termes de recharger des données à partir du serveur, j'ai deux réponses pour vous

  1. J'ai trouvé cet article très utile dans la compréhension des connexions (et simple du scrutin, quoique simple)
  2. Si vous êtes à l'aide de Rails, vous obtiendrez la chance avec les Rails 4 Live, voir ce post et de démonstration pour la juteuse pièces

1voto

pfooti Points 585

Je me rends compte que la question est un peu ancienne, mais elle se trouve sur la page la mieux notée pour ember.js, alors j’ai pensé en ajouter un peu.

J'utilise récemment le modèle ember pour gérer la liaison de données RESTful. Il y a moins de cloches et de sifflets, mais pour mes besoins, il est plutôt décent. Fondamentalement, il étend simplement la fonctionnalité du modèle pour une intégration relativement bonne avec un serveur poussant des objets JSON via une interface REST standard.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X