Cách hiển thị / ẩn nếu biến là null


82

Tôi muốn hiển thị / ẩn một div dựa trên việc một biến là null hay không.

<div ng-show="myvar"></div>

Lưu ý: biến trong trường hợp của tôi là một đối tượng.

Một câu hỏi rất đơn giản, nhưng tôi dường như không thể làm cho nó hoạt động.

Cảm ơn.



myvar == null lẽ
Gruff Bunny

2
Giá trị không rỗng nào myvargiả sử? ng-showsẽ hiển thị cho bất kỳ truthy giá trị, do đó, miễn là myvarkhông phải là false, null, undefined, 0, chuỗi rỗng hoặc NaNnó sẽ làm việc. Vui lòng đăng thêm một số mã cho ngữ cảnh.
Philipp Reichart

Để làm rõ, ví dụ trên có hoạt động, mã của tôi không vì những lý do không liên quan. Nếu mylar là false, null hoặc chưa bao giờ được sử dụng trước đây (ví dụ $ scope.myvar hoặc $ rootScope.myvar chưa bao giờ được gọi), div sẽ không hiển thị. Khi bất kỳ giá trị nào đã được gán cho nó, div sẽ hiển thị, ngoại trừ trường hợp giá trị cụ thể là sai.
Paul Haggo

Câu trả lời:


200
<div ng-hide="myvar == null"></div>

hoặc là

<div ng-show="myvar != null"></div>

16
Đó là một thực hành tốt để sử dụng <div ng-hide="myvar == null"></div>thay vì <div ng-show="myvar != null"></div>. Nó dễ đọc hơn.
maicher

12
@maicher Đó thực sự phụ thuộc vào bối cảnh
Petr Peller

ng-show dịch biểu thức là $scope.myvar != $scope.nullhay $scope.myvar != null? (đăng câu hỏi ở đây stackoverflow.com/questions/31387397 )
jperelli

Angular sẽ sử dụng javascript null. Bạn thực sự không muốn bắt đầu thêm null vào phạm vi vì null phải luôn là null (cộng với góc sẽ bỏ qua $ scope.null nó nếu được sử dụng trong một biểu thức).
Gruff Bunny

20

Để làm rõ, ví dụ trên có hoạt động, mã của tôi trong ví dụ không hoạt động vì những lý do không liên quan.

Nếu myvar là false, null hoặc chưa từng được sử dụng trước đây (ví dụ như $ scope.myvar hoặc $ rootScope.myvar chưa bao giờ được gọi), div sẽ không hiển thị. Khi bất kỳ giá trị nào đã được gán cho nó, div sẽ hiển thị, ngoại trừ trường hợp giá trị cụ thể là sai.

Điều sau sẽ làm cho div hiển thị:

$scope.myvar = "Hello World";

hoặc là

$scope.myvar = true;

Phần sau sẽ ẩn div:

$scope.myvar = null;

hoặc là

$scope.myvar = false;

2

Trong trường hợp này, myvar phải là một giá trị boolean. Nếu biến này là true, nó sẽ hiển thị div, nếu nó sai .. Nó sẽ ẩn.

Kiểm tra điều này .


Vì vậy, bạn đang nói rằng nó sẽ chỉ hoạt động nếu myvarlà boolean?
Robert Harvey

Tôi muốn tìm một giải pháp trong đó myvar là một đối tượng. Cảm ơn.
Paul Haggo

1
Nó phải là sự thật hoặc giả dối.
Rodrigo Oliveira

Paul, đối tượng của bạn trở lại là gì?
Rodrigo Oliveira
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.