2015-05-22 18 views
7

Có cách nào để nói trong góc một cái gì đó như thế này:Hiển thị "-" nếu giá trị trống?

<th ng-repeat=" o in Odds" >{{o.Name || "-"}}</th> 

Vì vậy, nếu không có dữ liệu trong o.Name để hiển thị "-"?

+1

Mã của bạn là công việc [JSFiddle] (https://jsfiddle.net/bwh5abv8/3/) – valverde93

+1

Những câu trả lời đưa ra một lựa chọn chính xác, nhưng họ không giải quyết thực tế là nếu những gì bạn có quyền không làm việc, giá trị thực sự không phải là falsey khi bạn chạy nó. – jdphenix

+1

vì vậy, như đã đề cập trước khi ví dụ của bạn là chính xác, bạn có thể đăng một ví dụ về dữ liệu của bạn trong 'Tỷ lệ cược' và chúng tôi có thể tìm ra lý do tại sao nó không hoạt động cho bạn –

Trả lời

6

dụ bạn nên làm việc, nhưng nếu bạn có khoảng trắng hoặc một chức năng trong o.Name nó sẽ không giải quyết để falsey và bạn sẽ nhận được một không gian vô hình trong HTML chứ không phải là dấu gạch ngang mong muốn.

Một bộ lọc chung có thể được sử dụng để thay thế các giá trị rỗng cho dấu gạch ngang và áp dụng bình thường khác nhau trên đầu vào đầu tiên:

angular.module('App.filters', []).filter('placeholder', [function() { 
    return function (text, placeholder) { 
     // If we're dealing with a function, get the value 
     if (angular.isFunction(text)) text = text(); 
     // Trim any whitespace and show placeholder if no content 
     return text.trim() || placeholder; 
    }; 
}]); 

Sau đó, bạn có thể sử dụng nó như sau:

<th ng-repeat=" o in Odds" >{{o.Name | placeholder:'-'}}</th> 

Đây là sau đó hoàn toàn có thể tái sử dụng cho các hàng/cột khác và bất kỳ nơi nào khác mà bạn muốn áp dụng cùng một quy tắc.

Ví dụ: http://jsfiddle.net/kfknbsp7/4/

+0

nếu hàm không trả về chuỗi thì sao? – Grundy

+0

Với mã trên, bạn sẽ gặp lỗi. Thật ra, tôi đã trình diễn một ví dụ đơn giản giải quyết vấn đề OP trực tiếp. Tất nhiên một bộ lọc như thế này cung cấp cho bạn rất nhiều phạm vi để xác nhận và gõ kiểm tra đầu vào của bạn và tính toán như vậy ra khỏi các tập tin HTML của bạn. – seanhodges

1

Đối với trường hợp này, bạn có thể sử dụng ngIf như thế này:

<th ng-repeat=" o in Odds" > 
     <span ng-if="o.Name">{{o.Name}}</span>   
     <span ng-if="!o.Name"> - </span> 
    </th> 
1

Bạn có thể có một cái gì đó sử dụng ngIf nếu điều này không làm việc

<th ng-repeat="o in Odds"> 
    <span ng-if="o.Name">{{o.Name}}</span> 
    <span ng-if="!o.Name">-</span> 
</th> 
+1

Cùng một câu trả lời cùng một lúc ... – carton

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