ホームページ > ウェブフロントエンド > jsチュートリアル > AngularJS コントローラー間でデータを効率的に渡すにはどうすればよいですか?

AngularJS コントローラー間でデータを効率的に渡すにはどうすればよいですか?

DDD
リリース: 2024-12-18 19:42:20
オリジナル
783 人が閲覧しました

How Can I Efficiently Pass Data Between AngularJS Controllers?

AngularJS のコントローラー間でのデータの受け渡し

AngularJS のコントローラー間でのデータの受け渡しは一般的なタスクであり、いくつかの異なる方法があります。それ。この記事では、サービスを使用して ProductController から CartController にデータを渡す方法について説明します。

サービスの実装

まず、サービスを定義します。製品リストを管理する productService と呼ばれます。このサービスには、addProduct と getProducts という 2 つの関数が含まれます。 addProduct は新しい製品をリストに追加し、getProducts はリスト全体を返します。

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

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

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

  return {
    addProduct: addProduct,
    getProducts: getProducts
  };

});
ログイン後にコピー

コントローラーの実装

次に、productService を挿入します。 ProductController と CartController の両方です。

ProductController では、という関数を定義します。 callToAddToProductList は、選択した製品を productService によって管理されるリストに追加します。

app.controller('ProductController', function($scope, productService) {
    $scope.callToAddToProductList = function(currObj){
        productService.addProduct(currObj);
    };
});
ログイン後にコピー

CartController では、getProducts 関数を使用して productService から製品リストを取得し、$scope に割り当てます。 .products 変数。

app.controller('CartController', function($scope, productService) {
    $scope.products = productService.getProducts();
});
ログイン後にコピー

DOM更新

CartController の製品リストはハードコードされているため、新しい製品が追加された場合は DOM を手動で更新する必要があります。これを行う 1 つの方法は、$watch 関数を使用して $scope.products 変数への変更を監視し、それに応じて DOM を更新することです。

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);
});
ログイン後にコピー

サービスを使用して製品リストを管理し、製品リスト間で通信することにより、 2 つのコントローラーを使用すると、それらの間で簡単にデータを受け渡し、それに応じて DOM を更新できます。

以上がAngularJS コントローラー間でデータを効率的に渡すにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート