为什么这些AngularJS装饰器不能正常使用?

时间:2014-12-07 02:46:00

标签: angularjs

我正在使用此修复程序,我发现能够在AngularJS 1.2.27中使用动态创建的表单和字段,但它不会正确地使用uglify。说它在uglify之后运行时无法识别或找不到依赖项,但装饰器正在使用数组格式。还有什么我想念的吗?这是我的项目中唯一一个在uglify之后失败的文件。

.config(function( $provide ) {

    $provide.decorator('ngModelDirective', ['$delegate', 
        function( $delegate ) {

            var ngModel = $delegate[0],
                controller = ngModel.controller;

            ngModel.controller = ['$scope', '$element', '$attrs', '$injector',
                function(scope, element, attrs, $injector) { 
                    var $interpolate = $injector.get('$interpolate');
                    attrs.$set('name', $interpolate(attrs.name || '')(scope));
                    $injector.invoke(controller, this, {
                        '$scope': scope,
                        '$element': element,
                        '$attrs': attrs
                    });
                }
            ];
            return $delegate;
    }]);

    $provide.decorator('formDirective', ['$delegate', 
        function( $delegate ) {

            var form = $delegate[0],
                controller = form.controller;

            form.controller = ['$scope', '$element', '$attrs', '$injector',
                function(scope, element, attrs, $injector) {
                    var $interpolate = $injector.get('$interpolate');
                    attrs.$set('name', $interpolate(attrs.name || attrs.ngForm || '')(scope));
                    $injector.invoke(controller, this, {
                        '$scope': scope,
                        '$element': element,
                        '$attrs': attrs
                    });
                }
            ];
            return $delegate;
    }]);
});

函数params没有$吗?如果是这样我可以摆脱$ injector.invoke(控制器,这...并更改参数名称以反映数组格式依赖注入变量名称?

1 个答案:

答案 0 :(得分:1)

我认为你还需要为任何类型的uglification场景提供config函数的数组格式的依赖注入变量名:

.config([ '$provide', function( $provide ) {...}]);