7

Nếu tôi có như sau:Giảm thiểu góc với bộ điều khiển chỉ thị?

myapp.directive('directivename', ... 

    return { 
     ... 
     restrict: 'E', 
     controller: MyController, 
     ... 
    } 

    function MyController($scope, $somethingelse) { 
     // Contents of controller here 
    } 
); 

Làm thế nào để tôi sửa đổi này như vậy mà MyController sẽ không bị phá hủy khi minified? Tôi nhận được lỗi sau:

Error: [$injector:unpr] Unknown provider: eProvider <- e

Trả lời

20

Nó có thể được giải quyết bằng cách sử dụng chú thích phụ thuộc rõ ràng. Những gì bạn có nó chú thích tiềm ẩn gây ra các vấn đề trong khi giảm thiểu. Bạn cũng có thể sử dụng chú thích $inject hoặc mảng nội tuyến để chú thích các phụ thuộc trong chỉ thị.

MyController.$inject = ['$scope', '$somethingelse']; 

function MyController($scope, $somethingelse) { 
    // Contents of controller here 
} 

Hoặc trong chỉ thị:

return { 
    ... 
    restrict: 'E', 
    controller: ['$scope', '$somethingelse', MyController], 
    ... 
} 

Hoặc đăng ký điều khiển của bạn sử dụng cú pháp .controller

app.controller('MyController', ['$scope', '$somethingelse', MyController]); 

và thiết lập tên điều khiển trong các chỉ thị thay vì các nhà xây dựng.

return { 
    ... 
    restrict: 'E', 
    controller: 'MyController', 
    ... 
} 

Bạn cũng có thể có một cái nhìn tại ng-annotate mà bạn không cần phải sử dụng chú thích rõ ràng.

+0

Bạn biết đấy ... nếu chỉ Angular cho chúng tôi nhiều lựa chọn hơn. Tại sao chúng lại không linh hoạt? Dang. – Rap

1

Thông thường, các phương pháp sau đây được sử dụng:

myapp.controller('MyController', ['$scope', '$somethingelse', function($scope, $somethingelse) { 
    ... 
}]); 

để tránh vấn đề như vậy.

+0

Tôi có thể làm điều đó từ bên trong chỉ thị của mình không? Lưu ý rằng MyController là một cái cụ thể cho chỉ thị, vì vậy tôi đặt nó bên trong myapp.directive(). Tôi biết đó là "bình thường" – Rolando

+0

Tôi giả sử rằng 'var MyController = function ($ scope, $ somethingelse) {...}' 'MyController. $ Inject = ['$ scope', '$ somethingelse']; 'nên hoạt động. Chỉnh sửa: nó tương tự như câu trả lời của PSL. –

Các vấn đề liên quan