2017-02-20 17 views
11

Tôi viết một ứng dụng web sử dụng AngularJS (v1.5) vì vậy tôi có một số điều khiển, và trong những bộ điều khiển tôi thường tuyên bố cái gì đó như:Làm cách nào để tắt cảnh báo về 'chế độ này' và chế độ nghiêm ngặt bằng JSHint?

function myController($someDirectives, ...){ 
    var ctrl = this; 
    // My code 
} 

Vấn đề là khi tôi JSHint mã của tôi, tôi nhận được thông báo cảnh báo này cho tất cả 'điều này' của tôi được khai báo trong bộ điều khiển:

Nếu chức năng chế độ nghiêm ngặt được thực hiện bằng cách sử dụng chức năng gọi, giá trị 'này' sẽ không được xác định.

Tôi phải chính xác trong tệp .jshintrc của mình, tôi đặt "strict":false. Có ai biết cách vô hiệu hóa thông điệp này không?

Xin cảm ơn trước.

+0

Tôi không ở vị trí để kiểm tra, nhưng tôi nghĩ, nếu bạn thay đổi tên hàm thành MyController, nó sẽ được nhận dạng là hàm dựng và lỗi sẽ không được cung cấp. Cho một shot. – Ken

+0

Tôi đang gặp vấn đề tương tự. Trong trường hợp có thể, hàm đệ quy trong câu hỏi đang được truyền 'this' thông qua functionName.call. –

+1

Thật vậy, đề xuất của Ken dường như có hiệu quả. Đối với tôi, nó chỉ đơn giản là thêm một '" validthis ": true' trong .jshintrc của tôi. – NathanL

Trả lời

15

thiết lập cấu hình trong tập tin .jshintrc

{ 
    "validthis": true // Tolerate using this in a non-constructor 
} 
+0

Đây là những gì tôi đang tìm kiếm. Cảm ơn bạn. – NathanL

0

Tôi đang gặp vấn đề tương tự. Tôi đang làm "indirect invocation" với chức năng được đề cập, không phải "lời gọi hàm" và 'this' được tham chiếu nhiều lần trong phần thân hàm.

Trong trường hợp của tôi, tôi đã gặp rất nhiều "lỗi" này mà jsHint thoát trước khi quét toàn bộ tập lệnh của tôi.

Để làm được việc này tôi đặt này ở phía trên cùng của tôi kịch bản-file:

/*jshint maxerr: 10000 */ 

Nó đã không ngăn chặn các lỗi, nhưng ít nhất nó cho phép tôi để cuộn xuống để xem phân tích của toàn bộ jsHint của kịch bản.

2

Bạn luôn có thể ghi đè jshint options trong ví dụ chặn mã.

/* jshint validthis: true */ 
Các vấn đề liên quan