我们可以使用ng-repeat创建不同的指令吗?

时间:2014-05-29 06:58:00

标签: angularjs angularjs-directive angularjs-ng-repeat

认为我们有一些指令: Directive1,Directive2,......

我想用ng-repeat来获取这些指令名称的数组并创建它们中的每一个。

会起作用吗?

1 个答案:

答案 0 :(得分:1)

据我所知,ng-repeat无法实现。但是,没有必要ng-repeat方式。您可以在控制器作用域上声明一个数组,并使用$compile服务来创建指令。

var app = angular.module('plunker', []);

app.controller('MainCtrl', function($scope, $compile) {
  $scope.directiveArray = ['a', 'b ', 'c'];
  for (var i = 0; i < $scope.directiveArray.length; i++) {
    var dirName = $scope.directiveArray[i];
    var dirCompiled = $compile('<' + dirName + '></' + dirName + '>')($scope);
    angular.element(document.getElementById('holder')).append(dirCompiled);
  }
});

app.directive('a', function() {
  return {
    restrict: 'E',
    template: '<div>I\'m a </div>'
  }
});

app.directive('b', function() {
  return {
    restrict: 'E',
    template: '<div>I\'m b </div>'
  }
});

app.directive('c', function() {
  return {
    restrict: 'E',
    template: '<div>I\'m c </div>'
  }
});

HTML:

  <body ng-controller="MainCtrl">
    <div id="holder"></div>
  </body>

<强> Plunker