在标准grunt serve
中,我在我的一个指令中使用IIFE,如下所示:
(function() {
"use strict";
angular.module('napiRest')
.directive('componentStaffReport', ['$modal', 'ComponentStaffFactory', function ($modal, ComponentStaffFactory) {
return {
restrict: 'E',
transclude: true,
scope: {
componentId: '=componentId',
linkableContent: '=linkableContent'
},
templateUrl: 'app/pages/report/component-staff/component-staff-popup.html',
link: function (scope, element, attr) {
ComponentStaffFactory.componentId = scope.componentId;
var modalInstance = null;
scope.open = function () {
modalInstance = $modal.open({
templateUrl: 'ComponentStaffModal.html',
controller: 'ComponentStaffingCtrl',
size: 'lg',
backdrop: true,
windowClass: 'x-x-large-modal'
});
ComponentStaffFactory.modalInstance = modalInstance;
};
} //link
}; //return
}])
})();
当我使用grunt serve:dist
进行部署时,这不起作用。我收到错误:Uncaught TypeError: object is not a function
但是,当我移除周围的IIFE时,它可以正常工作。这是以某种方式引起的,因为uglify或minifying发生在对于dist的咕噜声中吗?
答案 0 :(得分:1)
似乎问题是由另一个文件中缺少分号引起的。另一个文件是一个角度控制器,最后没有分号。当grunt uglifys代码时,它会将此文件和上面的文件一起创建自己的匿名函数,这当然是编译器所不喜欢的。