2013-08-11 23 views
8

Tôi mới sử dụng AnguarJS và có điều tôi không hiểu về ng-show.Tại sao ng-show không hoạt động khi F hoặc N được nhập

Tôi có đoạn mã sau: http://codepen.io/mars16/full/atGLp

Khi người dùng bắt đầu gõ trong lĩnh vực đầu vào, tôi mong đợi một dấu hai chấm để xuất hiện tiếp theo bất cứ điều gì được gõ. Tôi đã nhận thấy rằng khi f hoặc n được gõ vào ban đầu các ký tự đại tràng không xuất hiện cho đến khi nhiều chữ cái được gõ. Tại sao điều này?

Trả lời

2

Tiêu chí không chính xác, ng-show phải có loại boolean. Hãy thử điều này

<span ng-show="variable.one.length > 0">:</span> 
7

Vấn đề là góc xem xét các giá trị 'f', 'false', '0', 'n' và 'no' để bị lỗi! Có an open bug cho hành vi này. Bạn có thể sửa nó bằng cách tiếp cận của sza hoặc bạn cũng có thể làm điều này:

<span ng-show="!!variable.one">:</span> 
+1

Tính năng khác hơn là một lỗi. Vì lý do này, tôi luôn khuyên bạn nên sử dụng kiểm tra nghiêm ngặt cho các điều kiện. – finishingmove

+0

Vâng, nó chỉ là sự hiểu biết đó là cách javascript nguyên bản làm việc. Nếu bạn bọc nó nội dung của ng-show trong một tuyên bố if, sau đó nó sẽ dẫn đến điều tương tự. Đó là lý do tại sao bạn cần phải kiểm tra như sza. – Noogen

+1

Đây là điều ngu ngốc nhất tôi từng thấy trong một khung phổ biến. Trước hết là 'f', 'no', và 'n' không có kinh doanh nào bị lỗi. Cũng có dây. JavaScript không hoạt động theo cách này một cách tự nhiên, hoặc khác '!!' sẽ không hoạt động. Trong JavaScript gốc, một chuỗi với bất kỳ nội dung nào là một giá trị trung thực. Điều thực sự xảy ra là nếu góc phát hiện giá trị của một biểu thức là một chuỗi, nó sẽ lặp lại nó một lần nữa. Điều này là vô ích, và gây ra nhiều vấn đề hơn từ của nó. Những thứ đơn giản là "tuyệt vời" không có bất kỳ vị trí nào trong một khung công tác, và Angular là đầy đủ của chúng. –

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