Минификация с помощью директив и анонимных контроллеров AngularJS

0

Я использую директиву " ng-strict-di " в своем приложении для защиты от неудачной минимизации. Но теперь я получаю сообщение об ошибках в своих директивах.

Ошибка: функция [$ injector: strictdi] ($ scope, element, attrs) не использует явные аннотации и не может быть вызвана в строгом режиме

Как явным образом добавить $ scope в зависимость от функции анонимного контроллера? Вот моя директива.

var myApp = angular.module("myApp",[]);
myApp.directive('myDirective', function(){
  return{
    restrict: 'A',
    template: '<h4> {{myController.msg}} </h4>',
    controller: function($scope, element, attrs){
      $scope.myController = this;
      this.msg = "Hello world";
    };
});

Я пытался:

var myApp = angular.module('myApp ', ['$scope'])

Но я получаю эту ошибку: Ошибка: [$ injector: modulerr] Не удалось создать экземпляр модуля

Теги:
angularjs-directive

1 ответ

2
Лучший ответ

Для директивного контроллера нужен синтаксис безопасного предупреждения:

controller: ["$scope", "element", "attrs", function($scope, element, attrs){
  $scope.myController = this;
  this.msg = "Hello world";
}];

Основываясь на этих параметрах, я предполагаю, что вам нужна функция link (просто догадка):

link: function($scope, element, attrs){
  $scope.myController = this;
  this.msg = "Hello world";
};
  • 0
    Первая часть в порядке. Выбор link должен быть более правильным, чем просто ее аргументы. Кроме того, this не определено в link (независимо от того, что $scope.myController = this; это вариант использования для controllerAs и его не должно быть вообще).
  • 0
    Спасибо! Я думаю, что все, что нужно, это контроллер: ["$ scope", function ($ scope, element, attrs)
Показать ещё 1 комментарий

Ещё вопросы

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