2016-07-28 7 views
0

で条件に依存します。要するにAngularJS DOM要素は、私はこの単純なディレクティブましディレクティブ

app.directive('participants',function(){ 
    return{ 
    restrict:'E', 
    scope:{ 
     allParticipants:"=", 
     appendOption:"=" 
    }, 
    templateUrl:'/templates/participants.html', 
    link: function(scope,element,attr){ 
     scope.$watch('allParticipants',function(value){ 
     if (value){ 
      value.length > 3 ? showShortParticipants() : showFullParticipants() 
     } 
     }); 
    } 
    } 
}); 

- 私は別の子のDOM要素を作成したいのvalueに依存します。たとえば、value.lengthが3より大きい場合は、タイプ1の要素をいくつか作成し、タイプ2の要素を作成しない場合は、1とは異なるテンプレートを作成します。

これを行うにはどうすればよいでしょうか?

あなたは

+0

そして、どのような種類の可能性がありますか?別の入力タイプですか?または、データを表示する別の方法ですか?または...? –

+0

Imは別の子テンプレートを作成することを話していますが、スコープからの結果に依存します:) – Chenko47

+1

"fullParticipants"ビューでのみ表示する必要がある要素のテンプレートで 'ng-if =" allParticipants.length> 3 "'を使用しますか? – dex

答えて

0

あなたはng-includeディレクティブを使用して、異なる外部のテンプレートのURLを読み込むことができますありがとうございます。テンプレートURLの値は、データの異なる結果に基づいている可能性があります。 (ng-showよりも好ましい)例ng-if

を用い template

app.directive('participants', function() { 
    return { 
    restrict: 'E', 
    scope:{allParticipants:"=",appendOption:"="}, 
    template: '<div ng-switch on="allParticipants">' + 
     '<div ng-switch-when="1">Type 1</div>' + 
     '<div ng-switch-when="2">Type 2</div>' + 
     '<div ng-switch-when="3">Type 3</div>' + 
    '</div>' 
    }; 
}); 

他posibilitiesが可能であるディレクティブでng-switchを用いて指令template

app.directive('participants', function() { 
    return { 
    restrict: 'E', 
    scope:{allParticipants:"=",appendOption:"="}, 
    link: function($scope) 
    { 
     $scope.$watch('allParticipants', function(value) 
     { 
     // determine template url 
     var tempVal; 
     switch (value){ 
      case 1: 
       tempVal = 'template1'; 
       break; 
      case 2: 
       tempVal = 'template2'; 
       break; 
      default: 
       tempVal = 'templatedefault'; 
       break; 
     }  
     // set scope value 
     $scope.templateURL = 'templates/' + tempVal + '.html';  
     }); 
    }, 
    template: '<ng-include src="templateURL"></ng-include>' 
    }; 
}); 

命題にng-includeを用い

命題

+0

はうまく動作します。ありがとうございました ! – Chenko47

+0

タイプごとに外部HTMLファイルを必要としない場合は、更新された回答を参照してください:) –

関連する問題