1. ホーム
  2. angularjs

[解決済み] AngularJS 1ページ内に複数のng-appを配置する。

2022-04-15 01:07:17

質問

Angular JSを学び始め、いくつかの基本的なサンプルを作成したところですが、以下の問題で行き詰まっています。

私は2つのモジュールと2つのコントローラを作成しました。

shoppingCart -> ShoppingCartController
namesList -> NamesController

各コントローラに関連するビューがあります。最初のビューは正常にレンダリングされますが、2番目のビューはレンダリングされません。エラーはありません。

http://jsfiddle.net/ep2sQ/

この問題を解決するために、ご協力お願いします。

また、ビューにコンソールを追加して、コントローラから渡された値を確認することは可能ですか?

例えば、以下の div に console.log を追加して、コントローラの値を出力することができます。

<div ng-app="shoppingCart" ng-controller="ShoppingCartController">
</div>

解決方法は?

つまり、基本的にはChernivが言ったように、同じページ内に複数のng-appを持つためにモジュールをブートストラップする必要があります。すべてのインプットに感謝します。

var shoppingCartModule = angular.module("shoppingCart", [])
shoppingCartModule.controller("ShoppingCartController",
  function($scope) {
    $scope.items = [{
      product_name: "Product 1",
      price: 50
    }, {
      product_name: "Product 2",
      price: 20
    }, {
      product_name: "Product 3",
      price: 180
    }];
    $scope.remove = function(index) {
      $scope.items.splice(index, 1);
    }
  }
);
var namesModule = angular.module("namesList", [])
namesModule.controller("NamesController",
  function($scope) {
    $scope.names = [{
      username: "Nitin"
    }, {
      username: "Mukesh"
    }];
  }
);
angular.bootstrap(document.getElementById("App2"), ['namesList']);
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.3/angular.min.js"></script>

<div id="App1" ng-app="shoppingCart" ng-controller="ShoppingCartController">
  <h1>Your order</h1>
  <div ng-repeat="item in items">
    <span>{{item.product_name}}</span>
    <span>{{item.price | currency}}</span>
    <button ng-click="remove($index);">Remove</button>
  </div>
</div>

<div id="App2" ng-app="namesList" ng-controller="NamesController">
  <h1>List of Names</h1>
  <div ng-repeat="_name in names">
    <p>{{_name.username}}</p>
  </div>
</div>