Angular,如何在ng-repeat之前将控制器分配给标记

时间:2016-01-26 09:53:03

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

有没有人可以告诉我是否可以在ng-repeat执行此操作之前将指令中的控制器分配给标记?

下面的代码只是我想要做的一个例子

<body ng-app="App">
<div my-t>
  <div ng-repeat="obj in List">
    {{obj.Name}}
  </div>
</div>

angular.module('App',[])
.directive('myT',[function(){
    return {
        replace : true,
        transclude : true,
        template : '<div ng-controller="listCtrl"><div ng-transclude></div></div>'
    };
}])
.controller('listCtrl', ['$scope', function($scope){
    $scope.List = [
        {Name: 'a'},{Name: 'b'}
    ];
}]);

Plunker

问题在于,当我的指令更改模板时,分配ng-controller ng-repeat已经编译,因此它不会显示任何数据。将ng-controller移动到标记不是一种选择。

最佳。

2 个答案:

答案 0 :(得分:1)

您也可以使用controller: 'listCtrl'将控制器置于指令中,然后您也可以从模板中删除ng-controller

答案 1 :(得分:1)

this.setState({isOpen: false})

控制器

<div my-t>
  <div ng-repeat="obj in List">
    {{obj.Name}}
  </div>
</div>