Я создаю небольшое приложение под названием puzometr
. Это касается только образовательных потребностей. Я хочу создать это приложение, используя AngularJS. Кроме того, я хочу использовать RequireJS в качестве модульной системы.
У меня странная проблема. Я создал свой тестовый контроллер, и у меня возникла проблема: инициализация контроллера срабатывает два раза.
Во-первых, полный код доступен здесь, в GitHub (подождите, не нажимайте на меня, я объясню все ниже).
Итак, проблема в файле myCtrl.js
. Вот код этого файла:
define(['angular'], function (angular) {
var module = angular.module('main.myModule', []);
module.controller('main.myCtrl', function ($scope) {
console.log($scope.$id);
$scope.bob = function () {
}
})
});
Он включен в основные/контроллеры/контроллеры.js следующим образом:
define(['app', 'main/controllers/myCtrl'], function (app) {
var module = angular.module('main.controllers', ['main.myModule']);
});
Этот файл включен в main.js по этому коду:
angular.module('main', ['ngRoute', 'main.services', 'main.controllers', 'main.directives']);
И main.js включен в app.js:
var app = angular.module('myApp', ['ngRoute', 'main', 'common']);
Итак, я случайно заметил, что определение функции в контроллере myCtrl срабатывает два раза. Я поставил console.log
и увидел это:
Не могли бы вы объяснить мне, почему это происходит? Почему контроллер инициализируется два раза?
Кроме того, у меня есть это у ng-inspector:
Таким образом, одна область создается как дочерняя для другой области. Обратите внимание, что область с id 3
имеет правильное имя контроллера.
Если вы используете ng-route для регистрации контроллеров и привяжите их к представлениям, не добавляйте их снова, используя атрибуты в ваших html файлах.