programing

AngularJS 템플릿에서 범위 변수가 정의되지 않았는지 확인하는 방법은 무엇입니까?

goodcopy 2021. 1. 19. 08:04
반응형

AngularJS 템플릿에서 범위 변수가 정의되지 않았는지 확인하는 방법은 무엇입니까?


범위 변수가 정의되지 않았 는지 확인하는 방법은 무엇입니까?

작동하지 않습니다.

<p ng-show="foo == undefined">Show this if $scope.foo == undefined</p>

이를 수행하는 가장 깨끗한 방법은 다음과 같습니다.

<p ng-show="{{foo === undefined}}">Show this if $scope.foo === undefined</p>

컨트롤러에서 도우미 기능을 만들 필요가 없습니다!


사용 undefined결정을 내려야하는 것은 일반적으로 자바 스크립트 나쁜 디자인의 표시이다. 다른 작업을 고려할 수도 있습니다.

그러나 귀하의 질문에 대답하려면 : 그렇게하는 가장 좋은 방법은 도우미 기능을 추가하는 것입니다.

$scope.isUndefined = function (thing) {
    return (typeof thing === "undefined");
}

및 템플릿에서

<div ng-show="isUndefined(foo)"></div>

수정 됨 :

HTML

  <p ng-show="getFooUndef(foo)">Show this if $scope.foo === undefined</p>

JS

$scope.foo = undefined;

$scope.getFooUndef = function(foo){
    return ( typeof foo === 'undefined' );
}

바이올린 : http://jsfiddle.net/oakley349/vtcff0w5/1/


부울 변수foo아니면 작동합니다 (즉, 해당 변수에 데이터가있을 때이를 표시하려는 경우).

<p ng-show="!foo">Show this if $scope.foo is undefined</p>

그리고 그 반대 :

<p ng-show="foo">Show this if $scope.foo is defined</p>


Angular 동작이 변경되었으므로 새 답변 게시. 다음 코드가 작동하는 것처럼 undefined와의 동등성을 확인하는 것은 이제 최소 1.5부터 각도 표현식에서 작동합니다.

ng-if="foo !== undefined"

이 ng-if가 true로 평가되면 해당 범위에서 백분율 속성을 삭제하고 $ digest를 호출하면 예상대로 문서에서 요소가 제거됩니다.


Angular 1을 사용하는 경우 Angular의 기본 제공 방법을 사용하는 것이 좋습니다.

angular.isDefined (값);

참조 : https://docs.angularjs.org/api/ng/function/angular.isDefined


이중 파이프 연산을 사용하여 after 문에서 값이 정의되지 않았는지 확인할 수 있습니다.

<div ng-show="foo || false">
    Show this if foo is defined!
</div>
<div ng-show="boo || true">
    Show this if boo is undefined!
</div>

데모 용 JSFiddle 확인

이중 파이프에 대한 기술적 인 설명은 https://stackoverflow.com/a/34707750/6225126 링크를 참조하십시오.


@impulsgraw가 쓴 것처럼. 파이프 뒤에 undefined를 확인해야합니다.

<div ng-show="foo || undefined">
    Show this if foo is defined!
</div>
<div ng-show="boo || !undefined">
    Show this if boo is undefined!
</div>

https://jsfiddle.net/mjfz2q9h/11/


<p ng-show="angular.isUndefined(foo)">Show this if $scope.foo === undefined</p>

참조 URL : https://stackoverflow.com/questions/27042706/how-to-check-if-a-scope-variable-is-undefined-in-angularjs-template

반응형