2017-12-15 34 views
0

다른 구성 요소의 데이터를 사용하는 구성 요소 (데이터 바인딩)가 정의되지 않았는지 항상 확인해야합니까?AngularJS, 항상 정의되지 않은 바운드 값을 확인해야합니까?

나는 항상 데이터가 오기를 기대합니다. 그렇게하지 않으면 데이터가 고쳐질 때까지 기다려야합니다. 아니면 예외를 평화롭게 검사하고 처리해야합니까?

나는 확인하는 것을 선호하지만 어느 것이 가장 우수한지 알고 싶습니다.

감사합니다

답변

0
각도가 "정의되지 않은"값을 숨길 수 있지만 각이 어떤 지시를 처리 할 수있는 기회가 될 때까지 요소를 숨기기 위해 CSS를 사용하는 NG-외투를 사용하여 보길 원하는 (또는 수

경우에 명시 적으로 ng-hide 또는 ng-if를 사용하여로드 된 내용에 따라 조건부로 요소를 숨기거나 제거합니다. 따라서 대부분의 경우 대답은 바인딩에서 검사 할 필요가 없지만 데이터 또는 기타 사항이로드되는 동안보기가 어떻게 나타나는지 결정해야합니다. 아웃이 몇 가지 있지만, 존 파파의가

(function(){ 
 
    angular.module('myApp', []) 
 
    .controller('MyCtrl', function($timeout){ 
 
     var ctrl = this; 
 
     ctrl.model = { 
 
     testA: 12, 
 
     testB: undefined 
 
     } 
 
     
 
     $timeout(function(){ 
 
     ctrl.model.testB = "something here now" 
 
     }, 5000) 
 
     
 
    }) 
 
})();
pre{ 
 
background:yellow; 
 
} 
 

 
/* 
 
Guarantees the elements aren't shown if they have ng-cloak 
 
attribute, angular will remove this once it has processed the 
 
directives on the element, at this point ng-if can take over 
 
conditionally removing/adding the element or ng-hide can conditionally 
 
remove it from display with css*/ 
 
[ng-cloak]{ 
 
    display:none; 
 
}
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.6.6/angular.min.js"></script> 
 

 

 
<div ng-app="myApp" ng-controller="MyCtrl as ctrl"> 
 
    <div> 
 
    {{ctrl.model.testA}} <span ng-if="ctrl.model.testB" ng-cloak>-</span> {{ctrl.model.testB}} 
 
    </div> 
 
    
 
    <pre>{{ctrl|json}}</pre> 
 
</div>
일반적인 모범 사례를 들어

단지 각 모범 사례 (또는 스타일 가이드를) 검색 대부분의 사람/장소 https://github.com/johnpapa/angular-styleguide/blob/master/a1/README.md

+0

감사에 대한 사실상의 표준이다 당신!! 특히 JohnPapa 링크. 많은 유용한 팁. – concuagia

+0

@concuagia이 질문에 대한 답변이 없으면 대답 옆에있는 체크를 누르십시오. 그래서 다른 사람들은 이것이 작동한다는 것을 알게됩니다 ... 그리고 나는 소중한 것을 얻습니다 :) (그렇지 않다면 나에게 무슨 일이 일어나는지 알려주세요. 답변을 수정할 수 있습니다). – shaunhusain