Javascript 如何防止grunt uglify在指令中弄乱angularJS范围值
我编写了一个相当简单的指令,可以动态更改页面上的样式表 以下是该指令的一个片段:Javascript 如何防止grunt uglify在指令中弄乱angularJS范围值,javascript,angularjs,gruntjs,grunt-contrib-uglify,Javascript,Angularjs,Gruntjs,Grunt Contrib Uglify,我编写了一个相当简单的指令,可以动态更改页面上的样式表 以下是该指令的一个片段: OfficeSuiteModule.directive('officeButton', ['$q', 'stylesheetInjectorService', function($q, stylesheetInjectorService) { return { restrict: 'E', replace: true, scope: {
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:functionc{}
因为没有定义c,所以这不起作用。这将引发AngularJS错误。
有没有一个角度的方法来解决这个问题,或者我可以指示grunt contrib uglify任务不要更改这个参数
您还必须对控制器功能进行注释:
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
}]
}
}]);
您还必须对控制器功能进行注释:
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
}]
}
}]);
这正是我想要的答案。不知道这么简单。谢谢你。您必须再等待10分钟才能获得积分,因此在接下来的10分钟内无法接受。@我还想补充一点,您可以将其拉到自己的控制器文件中,并封装所有内容,但我不确定这是否只是一个简单的指令,或者它在未来会增长。你可以使用[]min安全数组方法,如果你把它拉到自己的文件中,你可以使用$inject。我建议你使用这个插件。它会自动为文件添加注释。@TheLazyChap我不知道如果指令是,您可以将指令的控制器拉出。你介意给我一个简短的例子吗,因为我将来可能需要它?@Complexity我已经为你创建了一个plunk,看看它是否有意义。我在指令的控制器文件中添加了一些注释。这应该是不言自明的。这正是我想要的答案。不知道这么简单。谢谢你。您必须再等待10分钟才能获得积分,因此在接下来的10分钟内无法接受。@我还想补充一点,您可以将其拉到自己的控制器文件中,并封装所有内容,但我不确定这是否只是一个简单的指令,或者它在未来会增长。你可以使用[]min安全数组方法,如果你把它拉到自己的文件中,你可以使用$inject。我建议你使用这个插件。它会自动为文件添加注释。@TheLazyChap我不知道如果指令是,您可以将指令的控制器拉出。你介意给我一个简短的例子吗,因为我将来可能需要它?@Complexity我已经为你创建了一个plunk,看看它是否有意义。我在指令的控制器文件中添加了一些注释。这应该是不言自明的。