Отдельные файлы для каждого контроллера в Angular.js

0

Я хочу иметь модуль Angular и главный контроллер. затем некоторые другие контроллеры, которые живут в других файлах.

Основной модуль:

var app = angular.module("main", []);
app.controller("mainCtrl", function ($scope) {
  $scope.method1 = function (name) {
  }
}

И это еще один контроллер внутри отдельного файла:

var app = angular.module("main");//without []
app.controller("textCtrl", function ($scope) {
   $scope.method1(); //it works and i call method1 from mainCtrl(separate file)
});

Я загружаю эти файлы следующим образом:

<script src="/modules/app.js"></script>
<script src="/modules/secondapp.js"></script>

Моя проблема заключается в том, что внутри второго контроллера я могу вызвать метод внутри основного контроллера, но я не могу вызвать метод внутри второго контроллера с основного контроллера.

Вся структура работает, но эта проблема меня беспокоит.

В конце я хочу иметь отдельные файлы для каждого контроллера, которые все живут внутри одного и того же модуля и могут совместно использовать $ scope и другие переменные в обоих файлах.

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

Мне нужна хорошая структура для этого.

Теги:

2 ответа

0

данные могут использоваться совместно с услугами между двумя или более контроллерами. Если вы хотите иметь такую же область, вам нужно иметь данные в $ rootScope.

Другая проблема, которую вы здесь говорите, может быть решена путем первой загрузки js файла с заданным угловым приложением и последующей загрузкой других файлов. В других файлах вам не нужно переопределять угловое приложение (angular.module), как вы это делали выше.

0

Похоже, у вас есть дочерние родительские контроллеры,

<div ng-controller="mainCtrl">
    <div ng-controller="textCtrl">

    </div>
</div>

то textCtrl может вызывать функции mainCtrl родительского контроллера или также иметь доступ к родительским переменным. и свойства дочернего контроллера не видны родительскому контроллеру.

это не имеет значения, два контроллера в отдельных файлах, потому что все они связаны через var app.

для связи между контроллерами существует много способов ссылаться на этот пост

используя service и emitting an event.

  • 0
    но мне нужно вызвать метод внутри textCtrl из mainCtrl. моя проблема в этом
  • 0
    Хорошо, тогда у вас есть эта структура HTML?

Ещё вопросы

Сообщество Overcoder
Наверх
Меню