将对象从ng-repeat传递给templateURL属性

时间:2016-05-19 13:39:27

标签: javascript angularjs

我正在尝试使用指令构建动态控件。

<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)

1 个答案:

答案 0 :(得分:1)

你无法获得scope。对于动态模板,您需要使用controller

.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';
        }
      };   
    }
 });