sql >> データベース >  >> NoSQL >> MongoDB

ng-必要以上に呼び出された場合

    ng-if すべてのダイジェストループで呼び出されます。問題は、関数呼び出しを含む式が含まれていることです。 Angularは、式の結果がいつ変更されるかを知る方法がないため、毎回呼び出します。

    より良いオプションは、各チャネルにフラグを設定し、ng-ifを使用して関連するフラグをテストすることです。次に、$scope.activeCategoryのたびにフラグを更新する必要があります カテゴリを設定するコードまたは$scope.$watch()を使用して行うことができる変更 自動的にトリガーします。

    例:

    $scope.setCategory = function (name) {
      $scope.activeCategory = name;
      for (var index=0; index < $scope.channels.length; index++) {
          $scope.channels[index].hasCategory = hasCategory($scope.channels[index].category, name);
      }
    };
    
    function hasCategory(categoryNameArray, name) {
      console.log('thisisbeingcalled');
      var e = _.indexOf(categoryNameArray, name);
      if (e === -1) {
        return false;
      } else {
        return true;
      }
    }
    

    次に、テンプレートで:

    <md-card flex="15" flex-xs="40" class="slide-up" layout="column"
        ng-repeat="channel in channels | orderBy: 'number' | filter: queryname"
        ng-if="channel.hasCategory"
        ng-init="channel.edit = false">
      <md-card-header ng-show="channel.edit == false">
        <img ng-src="{{channel.logo}}" alt="">
      </md-card-header>
      <md-card-header-text ng-show="channel.edit == false">
        <span class="md-subhead dark-blue" layout="row" layout-align="center" layout-margin>{{channel.number}}</span>
      </md-card-header-text>
    </md-card>
    

    より効率的になるはずです。




    1. MongoDB ReplicaSet-PRIMARYのみが残っている場合、PRIMARYの役割はSECONDARYになります

    2. mongodbクエリ:一意のエントリを取得する方法

    3. MongoDBオープンソースとMongoDBエンタープライズ

    4. bsonスペックの例のより良い説明?