2015-12-16 2 views
2

У меня есть две приложения AngularJS на одной странице, мне было интересно, почему Angular разбился, а затем понял, что это, вероятно, потому, что оба приложения называют одно и то же (я очень новичок в AngularJS).Использование двух приложений AngularJS на одной странице

Что мне нужно знать, что мне нужно изменить, чтобы различать их, если это имеет смысл.

Это мой код с двумя приложениями в отдельных divs NorthWest и NorthEast.

Если кто-то может помочь мне с этим я был бы очень благодарен,

Спасибо, заранее!

<div id="NorthWest" class="desc"> 

         <script> 

          var app = angular.module('myApp', []); 
          app.controller('regionsLinks', function($scope, $http) { 

          var url = 'http://scd.blaze.wpengine.com/wp-json/posts?type=listings&filter[listing_area]=northwest'; 

          $http.get(url).then(function (data) { 

          $scope.data = data.data; 

          });}); 

          app.controller('regionsLinks1', function($scope, $http) { 

          var url = 'http://scd.blaze.wpengine.com/wp-json/posts?type=listings&filter[listing_area]=northeast'; 

          $http.get(url).then(function (data) { 

          $scope.data = data.data; 

          });}); 



         </script> 


      <div ng-app="myApp"> 

       <div ng-controller="regionsLinks"> 

          <div ng-repeat="d in data"> 

          <h2 class="entry-title title-post"><a href="{{d.meta.links.self}}">{{d.title}}</a></h2> 

          <img src="{{d.acf.logo}}"> 

           <div id="listing-contact">Contact: {{d.acf.contact}}, {{d.acf.position}}</div> 

           <div id="listing-address-1"> 

            {{d.acf.address_1}}, 


            {{d.acf.address_2}} 


            {{d.acf.address_3}} 


            {{d.acf.town}} 

            {{d.acf.county}} 

            {{d.acf.postcode}} 

           </div> 

           <div id="listing-phone">Telephone: {{d.acf.telephone}}</div> 

           <div id="listing-mobile">Mobile: {{d.acf.mobile}}</div> 

           <div id="listing-email">Email: {{d.acf.email}}</div> 

           <div id="listing-website">Website: <a href="{{d.acf.website}}">{{d.acf.website}}</a></div> 

           <div id="listing-established">Established: {{d.acf.established}}</div> 

           <div id="listing-about">About: {{d.acf.about}}</div> 

           <div id="listing-mailingaddress"> 

            Mailing Address: {{d.acf.mailing_address_}}, {{d.acf.mailing_address_2}}, 
            {{d.acf.mailing_address_3}}, {{d.acf.mailing_town}}, {{d.acf.mailing_county}}, {{d.acf.mailing_postcode}} 

           </div> 

           <div id="listing-directions">Directions: {{d.acf.directions}}</div> 

           <div id="scd-link"><a href="{{d.link}}">View on The Shooting Club Directory</a></div> 

         </div> 



        </div> 



       <div id="NorthEast" class="desc"> 

         <div ng-controller="regionsLinks1"> 

          <div ng-repeat="d in data"> 

          <h2 class="entry-title title-post"><a href="{{d.meta.links.self}}">{{d.title}}</a></h2> 

           <div id="listing-address-1"> 

            {{d.acf.address_1}}, 


            {{d.acf.address_2}} 


            {{d.acf.address_3}} 


            {{d.acf.town}} 

            {{d.acf.county}} 

            {{d.acf.postcode}} 

           </div> 

         </div> 



        </div> 

       </div> 

      </div> 
+0

да, вы можете сделать это, но вы должны использовать [Ui-маршрутизатор] для этого, в [Ui-маршрутизатор] вы можете использовать два «UI-View», для получения дополнительной информации читайте [ui- router] (https://github.com/angular-ui/ui-router) – Maher

+0

Можете ли вы разместить свой код? – yarons

+0

Полностью подумал, что у меня было, извините! Я обновил свой вопрос с кодом –

ответ

2

Вы можете иметь две угловые приложения на странице, но только один из них может быть auto-bootstrapped with ng-app.

Вы можете создавать свои приложения (да, давать им разные, значимые имена) на bootstrapping them manually.

В вашем случае я считаю, что имеет смысл иметь только одно приложение с двумя контроллерами, одно для NorthWest и одно для NorthEast.

+0

Спасибо за это, это имеет смысл. Как я могу сделать это с двумя контроллерами? Я действительно новичок в этом, и хотя это звучит как лучший вариант, я не знаю, как его реализовать! –

+0

здесь [пример] (http://plnkr.co/edit/WcApQveUzRzC0pHUhwa0) – yarons

1

Для этого случая вы можете просто иметь один контроллер, потому что оба блока div нуждаются в одинаковых данных для привязки. Попробуйте

<script> 
    var app = angular.module('myApp', []); 
    app.controller('regionsLinks', function($scope, $http) { 
     var url = 'http://scd.blaze.wpengine.com/wp-json/posts?type=listings&filter[listing_area]=northwest'; 
     $http.get(url).then(function(data) { 
     $scope.data = data.data; 
     }); 
    }); 
    </script> 

    <div ng-app="myApp" ng-controller="regionsLinks"> 
    <div id="NorthWest" class="desc"> 
     <div ng-repeat="d in data"> 
     <h2 class="entry-title title-post"><a href="{{d.meta.links.self}}">{{d.title}}</a></h2> 
     <img src="{{d.acf.logo}}"> 
     <div id="listing-contact">Contact: {{d.acf.contact}}, {{d.acf.position}}</div> 
     <div id="listing-address-1"> 
      {{d.acf.address_1}}, {{d.acf.address_2}} {{d.acf.address_3}} {{d.acf.town}} {{d.acf.county}} {{d.acf.postcode}} 
     </div> 
     <div id="listing-phone">Telephone: {{d.acf.telephone}}</div> 
     <div id="listing-mobile">Mobile: {{d.acf.mobile}}</div> 
     <div id="listing-email">Email: {{d.acf.email}}</div> 
     <div id="listing-website">Website: <a href="{{d.acf.website}}">{{d.acf.website}}</a></div> 
     <div id="listing-established">Established: {{d.acf.established}}</div> 
     <div id="listing-about">About: {{d.acf.about}}</div> 
     <div id="listing-mailingaddress">Mailing Address: {{d.acf.mailing_address_}}, {{d.acf.mailing_address_2}}, {{d.acf.mailing_address_3}}, {{d.acf.mailing_town}}, {{d.acf.mailing_county}}, {{d.acf.mailing_postcode}}</div> 
     <div id="listing-directions">Directions: {{d.acf.directions}}</div> 
     <div id="scd-link"><a href="{{d.link}}">View on The Shooting Club Directory</a></div> 
     </div> 
    </div> 

    <div id="NorthEast" class="desc"> 
     <div ng-repeat="d in data"> 
     <h2 class="entry-title title-post"><a href="{{d.meta.links.self}}">{{d.title}}</a></h2> 
     <div id="listing-address-1"> 
      {{d.acf.address_1}}, {{d.acf.address_2}} {{d.acf.address_3}} {{d.acf.town}} {{d.acf.county}} {{d.acf.postcode}} 
     </div> 
     </div> 
    </div> 
</div> 
+1

URL-адреса не совпадают. Но я согласен, что это можно сделать даже с одним контроллером (который делает два вызова) – yarons

+0

Они используют другой URL-адрес, хотя бы им не нужны отдельные контроллеры? –

+0

Я только что отредактировал код, чтобы попробовать это, используя комментарии от вас обоих, вы могли бы увидеть, можете ли вы сказать, что я делаю неправильно? Спасибо за вашу помощь! –

Смежные вопросы