Объявляю $watch на переменную, но вылетает эта ошибка:
В аналогичном коде в другом js-файле этой ошибки нет.
1) Подключение контроллера #2, где сыпется ошибка:
angular
.module('form2', [...])
.controller('form2Controller', ['$q', '$scope', '$timeout',
function($scope, $timeout, $q, ...)...])
2) Откуда летит:
$scope.$watch('model.value2', function ()
{
$scope.getForm();
});
3) Контроллера с аналогичным кодом, где нет ошибки и все запускается:
angular
.module('form1', [...])
.controller('form1Controller', ['$q', '$scope', '$timeout',
function($scope, $timeout, $q, ...)...])
4) идентичный участок рабочего кода, но к другой переменной в другом контроллере:
$scope.$watch('model.value1', function ()
{
$scope.refresh();
});
5) Подключение модулей:
angular.module('content', [
'form1',
'form2',
])
6) Подключение контроллеров в div:
<div ng-controller="form1Controller">...</div>
<div ng-controller="form2Controller">...</div>
Проблема кроется вот в этом месте:
.controller('form2Controller', ['$q', '$scope', '$timeout',
function($scope, $timeout, $q, ...)...])
Для того чтобы Dependency Injection (DI) работало корректно, важно, чтобы порядок параметров, передаваемых в контроллер, перечисленный в описании DI совпадал с порядком в сигнатуре функции контроллера. Чтобы понять, почему это важно, достаточно представить, что этот код будет подвергнут минификации. Он станет выглядеть как-то так:
.controller('form2Controller', ['$q', '$scope', '$timeout',
function(a, b, c, ...)...])
И тогда единственным способ для ангуляра понять, что при вызове контроллера вторым параметром, например, надо передавать $timeout — это ориентироваться на порядок, в котором аргументы перечислены в начале массива.
В общем, для исправления проблемы надо указать параметры в нужном порядке. Либо так:
.controller('form2Controller', ['$q', '$scope', '$timeout',
function($q, $scope, $timeout, ...)...])
, либо так:
.controller('form2Controller', ['$scope', '$timeout', '$q',
function($scope, $timeout, $q, ...)...])
Продвижение своими сайтами как стратегия роста и независимости