[javascript] 바인딩 Null / 정의되지 않은 경우 Angularjs 템플릿 기본값 (필터 포함)

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이 아닌 / 정의되지 않은 것으로 평가되면 내용이 자동으로 바뀌고 모든 것이 행복합니다.

평가 전에 표시 할 angularjs 설정 기본값


답변

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;
    };
});


답변