2017-12-15 9 views
0

他のコンポーネントのデータを使用しているコンポーネント(データバインディング)は、常に未定義をチェックする必要がありますか?AngularJS、私はいつも未定義のバウンド値をチェックすべきですか?

私はいつもデータが来ることを期待しているからです。それができない場合、私はそれをクラッシュさせ、データが修正されるのを待つか、または例外をチェックして平和的に処理する必要がありますか?

私は確認したいと思いますが、どちらがベストプラクティスであるかを知りたいと思います。

は角度が「未定義」の値を非表示になりますが、角度が任意のディレクティブ(またはいくつかのケースでを処理する機会があったまで、要素を非表示にCSSを使用して、NG-マントを使用してに見たいと思うかもしれません

答えて

0

ありがとう明示的に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

関連する問題