1

我编写了一个相当简单的指令,可以动态更改页面上的样式表。

这是指令的一个片段:

OfficeSuiteModule.directive('officeButton', ['$q', 'stylesheetInjectorService', function($q, stylesheetInjectorService) {
    return {
        restrict: 'E',
        replace: true,
        scope: {
            isDisabled: '@?',
            label: '@?',
            api: '='
        },
        template: OFFICE_BUTTON_TEMPLATE,

        // Defines the controller for the 'officeButton' directive.
        controller: function($scope) { }
    }
}]);

现在,我正在使用 grunt 来构建我的项目,并且正在使用该任务grunt-contrib-uglify来缩小 JavaScript 文件,但是我在这里遇到了一个问题。

如果我查看 JavaScript 文件的缩小版本,我的指令签名中的控制器将更改为:controller: function(c) {}

关闭 couse 这将不起作用c,因为未定义。它会引发 AngularJS 错误。有没有 Angular 的方法来解决这个问题,或者我可以指示 grunt-contrib-uglify 任务不要更改这个参数?

亲切的问候

4

1 回答 1

4

您还必须注释控制器功能:

controller: ['$scope', function($scope) {
        // your function
}]

所以你的完整代码变成:

OfficeSuiteModule.directive('officeButton', ['$q', 'stylesheetInjectorService', function($q, stylesheetInjectorService) {
    return {
        restrict: 'E',
        replace: true,
        scope: {
            isDisabled: '@?',
            label: '@?',
            api: '='
        },
        template: OFFICE_BUTTON_TEMPLATE,

        // Defines the controller for the 'officeButton' directive.
        controller: ['$scope', function($scope) {
            // your function
        }]
    }
}]);
于 2015-07-22T08:24:14.640 回答