programing

AngularJS : 디렉티브에서의 최소화 문제

topblog 2023. 3. 14. 21:20
반응형

AngularJS : 디렉티브에서의 최소화 문제

나는 아직 최소화에 대한 또 다른 문제가 있다.이번에는 명령어 컨트롤러에 $scope 서비스가 전달되었기 때문입니다.아래 코드 참조:

angular.module('person.directives').
directive("person", ['$dialog', function($dialog) {
return {
    restrict: "E",
    templateUrl: "person/views/person.html",
    replace: true,
    scope: {
        myPerson: '='
    },     
    controller: function ($scope)
    {                   
        $scope.test = 3;                   
    }
}
}]);

컨트롤러 부분을 코멘트하면 정상적으로 동작합니다.

보시다시피 디렉티브에 어레이 선언을 사용했기 때문에 최소화된 후에도 $dialog 서비스는 Angular에 인식됩니다.하지만 컨트롤러의 $scope 서비스에 대해서는 어떻게 해야 하나요?

다음과 같이 컨트롤러를 선언해야 합니다.

controller: ['$scope', function ($scope)
    {                   
        $scope.test = 3;                   
    }]

완전한 예는 다음과 같습니다.

angular.module('person.directives').
directive("person", ['$dialog', function($dialog) {
return {
    restrict: "E",
    templateUrl: "person/views/person.html",
    replace: true,
    scope: {
        myPerson: '='
    },     
    controller: ['$scope', function ($scope)
    {                   
        $scope.test = 3;                   
    }]
}
}]);

@Sam이 제공하는 솔루션은 작동하지만, 이는 디렉티브의 컨트롤러를 애플리케이션 전체에 노출시키는 것을 의미하며, 이는 불필요합니다.

네, 컨트롤러는 다른 파일로 작성되었습니다.

angular.module('person.controllers').controller('personCtrl', ['$scope', function ($scope) {
$scope.test = 3;
}]);

그런 다음 명령어로 컨트롤러를 이름으로 할당합니다.

controller: 'personCtrl'

그게 최선의 방법인지 모르겠어.깨끗해 보이는데.당신은 어떻게 생각하나요?

언급URL : https://stackoverflow.com/questions/16055449/angularjs-minification-issue-in-directive

반응형