0

次のコードを検討してください。

<div ng-show="false">
  <div ng-controller="expensive"></div>
</div>
<script>
var expensive = function() {
  console.log('expensive');
};
</script>

高価なコントローラーは呼び出されないようにしたいと思います。これは高価であり (実際には、大量の I/O をトリガーする)、有用な効果がないからです。show 式 (またはそれに相当するもの) が true の場合にのみ呼び出されるようにします。

ちなみに、次の作品は(そして私の要点を示しています)、しかしそれはひどく醜いです:

<button ng-click="visib=!visib">display</button>
<div ng-repeat="v in (visib && [1] || [])">
  <div ng-controller="expensive"></div>
</div>
<script>
var expensive = function() {
  console.log('expensive');
};
</script>  
4

2 に答える 2

2

ngSwitchswitch 条件が評価されるときに、dom に要素を配置する which を使用できます。

<div ng-app ng-switch on="causeIt">
    <button ng-click="causeIt = true">Make Expensive</button>    
    <div ng-switch-when="true" ng-controller="expensive"></div>
</div>

jsfiddle の例

于 2013-07-03T01:04:00.090 に答える
0

正解はngIfです。

ngIf ディレクティブは、DOM ツリーの一部を削除して再作成します

于 2013-07-03T02:02:25.480 に答える