2016-05-19 5 views
1

私は、ディレクティブを使って動的コントロールを構築しようとしています。オブジェクトをng-repeatからtemplateURL属性に渡す

<div ng-repeat="k in m.Array1" style="padding-left:30px"> 
    <div ng-repeat="l in k.Array2.Array3"> 
     <div control-picker var1="l" var2="k.Array2.Array3"> 
     </div>       
     </div 
</div> 

htmlは上記のようになります。

私はディレクティブのスコープ内でVAR 1およびVAR 2にすることができたではなくtemplateURL関数パラメータに

.directive('controlpicker', function() { 
return { 
    scope: { var1: '=', var2: '=' }, 
    templateUrl: function (elem, attr) { 
     if (scope.var1.prop1 == 'MC') { 
        return 'MultipleChoice.html';      
      }   
      else { 
       return 'Default.html'; 
      } 
     } }; }); 

私はattr.var1.prop1のようなすべての可能な方法でscope.var1.prop1を試してみましたこの場合、var1は文字列のようになります。どうすれば実現できますか(範囲をhtmlにも送信する必要があります)

+0

チェック[この同様の質問](http://stackoverflow.com/questions/19501584/how-to-pass-in-templateurl-via-scope-variable-:動的テンプレートのためには、controllerを使用する必要がありますイン・アトリビュート)。 –

答えて

1

scopeを取得できません。

.directive('controlpicker', function() { 
return { 
    template: '<ng-include src="getTemplateUrl()"/>', 
    scope: { var1: '=', var2: '=' }, 
    controller: function($scope) { 
     $scope.getTemplateUrl = function (elem, attr) { 
     if ($scope.var1.prop1 == 'MC') { 
      return 'MultipleChoice.html';      
     } else { 
      return 'Default.html'; 
     } 
     }; 
    } 
}); 
+0

感謝@antyrat ..これは宝石のように動作します! –

関連する問題