Là các biểu thức phức tạp có thể có trong ng-hide / ng-show?


180

Tôi muốn làm như vậy:

ng-hide="!globals.isAdmin && mapping.is_default"

nhưng biểu thức đánh giá luôn false.

Tôi không muốn xác định chức năng đặc biệt trên $scope.


1
Cú pháp đó hoạt động với tôi và tôi sử dụng nó thường xuyên. Nếu nó đang đánh giá false, bạn có thể muốn kiểm tra lại các giá trị đó. Có thể rằng "globals" và / hoặc "bản đồ" các đối tượng làundefined
derrylwc

Đọc bình luận của tôi dưới câu trả lời.
Paul

chỉ là một gợi ý - nếu bạn sử dụng phương thức điều khiển thay thế, bạn thực sự có thể thực hiện đánh giá trong trình gỡ lỗi!
Dimitry K

Câu trả lời:


212

Sử dụng phương thức điều khiển nếu bạn cần chạy mã JavaScript tùy ý hoặc bạn có thể xác định bộ lọc trả về đúng hoặc sai.

Tôi mới thử nghiệm (đáng lẽ phải làm điều đó trước), và một cái gì đó như ng-show="!a && b"đã làm việc như mong đợi.


4
Bạn đúng rồi. Vấn đề là cờ isAdmin thuộc loại 'chuỗi' chứ không phải 'boolean'.
Paul

121

ng-show/ ng-hidechỉ chấp nhận booleancác giá trị.

Đối với các biểu thức phức tạp, tốt nhất là sử dụng bộ điều khiển và phạm vi để tránh các biến chứng.

Dưới đây một sẽ làm việc (Nó không phải là biểu hiện rất phức tạp)

ng-show="User=='admin' || User=='teacher'"

Ở đây phần tử sẽ được hiển thị trong UI khi bất kỳ điều kiện nào trong hai điều kiện trả về true (thao tác OR).

Như thế này bạn có thể sử dụng bất kỳ biểu thức.


12

Điều này sẽ hoạt động nếu bạn không có quá nhiều biểu thức.

Thí dụ: ng-show="form.type === 'Limited Company' || form.type === 'Limited Partnership'"

Đối với bất kỳ biểu thức hơn điều này sử dụng một bộ điều khiển.


1
Tôi không nghĩ rằng tuyên bố của bạn là chính xác: This will work if you do not have too many expressions.mặc dù tôi đồng ý rằng nó nên được thực hiện trong bộ điều khiển thay thế.
Rahul Desai

7

Tôi thường cố gắng tránh các biểu thức với ng-show và ng-hide vì chúng được thiết kế dưới dạng booleans, không phải là điều kiện. Nếu tôi cần cả logic có điều kiện và logic boolean, tôi thích đưa vào logic điều kiện bằng cách sử dụng ng-if làm kiểm tra đầu tiên, sau đó thêm vào một kiểm tra bổ sung cho logic boolean với ng-show và ng-ẩn

Howerver, nếu bạn muốn sử dụng một điều kiện cho ng-show hoặc ng-hide, đây là một liên kết với một số ví dụ: Hiển thị có điều kiện sử dụng ng-if, ng-show, ng-hide, ng-include, ng-switch


2

Một số câu trả lời ở trên không hiệu quả với tôi nhưng điều này đã làm. Chỉ trong trường hợp người khác có cùng một vấn đề.

ng-show="column != 'vendorid' && column !='billingMonth'"
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.