Функция контроллера вызывается более одного раза в AngularJs

Я делаю мобильное приложение с использованием JQuery Mobile и AngularJs В настоящее время я использую одностраничную структуру, вот мой пример

<body  ng-app="myApp">
    <div data-role="page" id="foodscreen" ng-controller="foodModule">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="addfood" ng-controller="foodModule">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="foodLogDetail" ng-controller="foodModule">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <!--  Exercise Module  -->
    <div data-role="page" id="exercisescreen" ng-controller="exerciseModule">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="addexercise" ng-controller="exerciseModule">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="exerciseLogDetail" ng-controller="exerciseModule">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
</body>

Моим первым 3 требуемым страницам требуется Controller с именем foodModule, а другим требуемым 3 - exerciseModule, но при этом я получаю проблему, которую моя функция контроллера вызывает 3 раза, если я пишу только на 1 странице, другие страницы не работают. Есть ли какое-либо решение, которое я мог бы использовать для избежать этой проблемы?

Обновить

Вот демонстрация моего приложения.


person Blu    schedule 25.12.2013    source источник


Ответы (1)


Оберните каждую группу контроллеров внутри выделенного элемента [div] и присоединяйте каждый контроллер только один раз:

<body  ng-app="myApp">

  <div ng-controller="foodModule">
    <div data-role="page" id="foodscreen">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="addfood">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="foodLogDetail">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
  </div>

  <!--  Exercise Module  -->
  <div ng-controller="exerciseModule">
    <div data-role="page" id="exercisescreen">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="addexercise">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
    <div data-role="page" id="exerciseLogDetail">
        <div data-role="header" data-position="fixed"></div>
        <div data-role="content"></div>
        <div data-role="footer" data-position="fixed" class="footer_include"></div>
    </div>
  </div>

</body>
person Stewie    schedule 25.12.2013
comment
это повлияет на другие вещи, например, я сделаю некоторую работу на странице с идентификатором addfood после некоторой обработки она будет перенаправлена ​​​​на страницу с идентификатором foodscreen, но когда обработка завершится, страница не будет отображать только URL-адрес в изменениях адресной строки, но не отображать страницу содержание - person Blu; 25.12.2013
comment
Покажите остальную часть кода. Непонятно, как на самом деле работает ваше перенаправление. Настройте плунжер. - person Stewie; 26.12.2013
comment
Это хорошо, но на самом деле ваша скрипка должна содержать только минимальное количество кода, необходимого для точного воспроизведения проблемы. Извините, но я не собираюсь просматривать всю вашу заявку. - person Stewie; 27.12.2013
comment
ааа :) это нормально, но это минимальная сумма :) - person Blu; 27.12.2013