Angular의 날짜 필터를 사용하여 날짜 인 ‘date’라는 모델 속성을 표시하는 템플릿 바인딩이 있습니다.
<span class="gallery-date">{{gallery.date | date:'mediumDate'}}</span>
여태까지는 그런대로 잘됐다. 그러나 현재 날짜 필드에 값이 없으면 바인딩에 아무것도 표시되지 않습니다. 그러나 날짜가 없으면 문자열 ‘Various’를 표시하고 싶습니다.
이진 연산자를 사용하여 기본 논리를 얻을 수 있습니다.
<span class="gallery-date">{{gallery.date || 'Various'}}</span>
그러나 날짜 필터와 함께 작동하도록 할 수는 없습니다.
<span class="gallery-date">{{gallery.date | date:'mediumDate' || "Various"}}</span>
날짜 필터와 함께 이항 연산자를 사용하려면 어떻게해야합니까?
답변
내가해야 할 일은 부드러운 괄호로 표현의 왼쪽을 감싸는 것입니다.
<span class="gallery-date">{{(gallery.date | date:'mediumDate') || "Various"}}</span>
답변
다음 필터를 만들었습니다.
angular.module('app').filter('ifEmpty', function() {
return function(input, defaultValue) {
if (angular.isUndefined(input) || input === null || input === '') {
return defaultValue;
}
return input;
}
});
이렇게 사용하려면 :
<span>{{aPrice | currency | ifEmpty:'N/A'}}</span>
<span>{{aNum | number:3 | ifEmpty:0}}</span>
답변
다른 것을 시도하고 싶을 경우를 대비하여. 이것이 나를 위해 일한 것입니다.
다음과 같은 구조를 가진 3 차 연산자를 기반으로합니다.
condition ? value-if-true : value-if-false
결과로:
{{gallery.date?(gallery.date | date:'mediumDate'):"Various" }}
답변
날짜 필터와 함께 이항 연산자를 사용하려면 어떻게해야합니까?
<span class="gallery-date">{{gallery.date | date:'mediumDate' || "Date Empty"}}</span>
당신은 또한 시도 :
<span class="gallery-date">{{ gallery.date == 'NULL' ? 'mediumDate' : "gallery.date"}}</span>
답변
ngBind를 사용하면이 답변이 정말 마음에 들었습니다. 기본 텍스트는 요소 본문에있을 수 있으며 ngBind가 null이 아닌 / 정의되지 않은 것으로 평가되면 내용이 자동으로 바뀌고 모든 것이 행복합니다.
답변
cshtml에서
<tr ng-repeat="value in Results">
<td>{{value.FileReceivedOn | mydate | date : 'dd-MM-yyyy'}} </td>
</tr>
JS 파일에서 app.js,
app.controller 외부에 아래 필터를 추가하십시오.
여기서 “mydate”는 날짜를 구문 분석하기 위해 호출하는 함수입니다. 여기서 “app”는 angular.module을 포함하는 변수입니다.
app.filter("mydate", function () {
var re = /\/Date\(([0-9]*)\)\//;
return function (x) {
var m = x.match(re);
if (m) return new Date(parseInt(m[1]));
else return null;
};
});