Я работаю с унаследованным приложением VB.Net, которое унаследовал. Директивы нг-приложений и нг-контроллер как появляются на HTML элемент главной страницы корня:Угловой контроллер возвращен undefined
<html runat="server" id="html" ng-controller="MasterController">
Атрибут ng-app
устанавливается в коде-позади для страницы. Он присутствует, когда я запускаю страницу и просматриваю источник. Приложение распространяется до модуля ng-app="myModule"
Контроллер определяется в функции передается add_load
в MasterPage также, не совсем в конце тела, но не далеко от него:
Sys.Application.add_load(function() {
var module = angular.module('myModule');
var MasterController = function ($scope, $compile) {
... // stuffs
}
};
module.controller('MasterController', ["$scope", "$compile", MasterController]);
});
Локально , это работает (или, похоже, работает) отлично, я не вижу ошибок в консоли. Тем не менее, приложение теперь было развернуто в промежуточной среду, и в консоли браузера в этой среде я вижу угловую ошибку:
[ng:areq] not a function got undefined
Есть очень мало различий между плацдармом и моей местной окружающей средой, эти различиями во многом то, что путник сценариев .Net используется для конкатенации и минимизации множества файлов JS, включая Angular, и данных, используемых приложением. AFAIK нет других различий.
Я не думаю, что связка вызывает проблему, поскольку я включил локальное соединение, и я не вижу ошибки. Я также не вижу, что данные, переданные приложению, вызывают проблему (это данные клиента, данные учетной записи и т. Д.), Поскольку он даже не используется в этом конкретном контроллере.
Спасибо за советы! Руководство по стилю выглядит великолепно. Я попробую их как можно скорее – danwellman
Все еще не понимаю, почему это лучшая практика. Почему разделение 1 логической строки, объявляющей функции контроллеров на 3 строки, является настолько умной идеей ... –
@PetrAveryanov, потому что инъекция зависимостей Angular 1.x использует сопоставление строк и/или синтаксис массива «взломать», который был добавлен позже (возможно, версия 1.2?). Вытащив его явно, вы гарантируете, что ваш код безопасен и он явный и очень читаемый. Любой последующий разработчик точно узнает, что делает этот код. Кроме того, сколько контроллеров в конечном итоге растет, чтобы ввести 10 аргументов? Это очень длинный «однострочный». Разрушая его, вам легче контролировать и читать ваше заявление. –