Maison > interface Web > js tutoriel > Comment puis-je transmettre efficacement des données entre les contrôleurs AngularJS ?

Comment puis-je transmettre efficacement des données entre les contrôleurs AngularJS ?

DDD
Libérer: 2024-12-18 19:42:20
original
789 Les gens l'ont consulté

How Can I Efficiently Pass Data Between AngularJS Controllers?

Transmission de données entre contrôleurs dans AngularJS

La transmission de données entre contrôleurs dans AngularJS est une tâche courante, et il existe plusieurs façons de le faire il. Dans cet article, nous aborderons l'utilisation d'un service pour transmettre des données du ProductController au CartController.

Implémentation du service

Pour commencer, nous définirons un service appelé productService qui gérera notre liste de produits. Ce service contiendra deux fonctions : addProduct et getProducts. addProduct ajoutera un nouveau produit à la liste et getProducts renverra la liste entière.

app.factory('productService', function() {
  var productList = [];

  var addProduct = function(newObj) {
      productList.push(newObj);
  };

  var getProducts = function(){
      return productList;
  };

  return {
    addProduct: addProduct,
    getProducts: getProducts
  };

});
Copier après la connexion

Implémentation du contrôleur

Ensuite, nous injecterons le productService dans à la fois notre ProductController et CartController.

Dans ProductController, nous définirons une fonction appelée callToAddToProductList qui ajoutera le produit sélectionné dans la liste gérée par productService.

app.controller('ProductController', function($scope, productService) {
    $scope.callToAddToProductList = function(currObj){
        productService.addProduct(currObj);
    };
});
Copier après la connexion

Dans le CartController, nous utiliserons la fonction getProducts pour récupérer la liste de produits du productService et l'attribuer à la variable $scope.products.

app.controller('CartController', function($scope, productService) {
    $scope.products = productService.getProducts();
});
Copier après la connexion

Mise à jour DOM

Puisque votre liste de produits dans le CartController est codé en dur, vous devrez mettre à jour le DOM manuellement lorsqu'un nouveau produit est ajouté. Une façon de procéder consiste à utiliser la fonction $watch pour surveiller les modifications apportées à la variable $scope.products et mettre à jour le DOM en conséquence.

app.controller('CartController', function($scope, productService) {
    $scope.products = productService.getProducts();

    $scope.$watch('products', function(newValue, oldValue) {
        // Update the DOM here based on the new value of products
    }, true);
});
Copier après la connexion

En utilisant un service pour gérer la liste de produits et communiquer entre les deux contrôleurs, vous pouvez facilement transmettre des données entre eux et mettre à jour le DOM en conséquence.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal