1

谁能告诉我是否可以在 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'}
    ];
}]);

普朗克

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

最好的。

4

2 回答 2

1

您还可以将控制器放入您的指令中,然后您还可以从模板controller: 'listCtrl'中删除。ng-controller

于 2016-01-26T12:50:20.040 回答
1
<div my-t>
  <div ng-repeat="obj in List">
    {{obj.Name}}
  </div>
</div>

控制器

angular.module('App',[])
.directive('myT',[function(){
    return {
        restrict: 'A',
        replace : true,
        transclude : true,
        template : '<div><div ng-transclude></div></div>',
        controller : 'listCtrl'
    };
}])
.controller('listCtrl', ['$scope', function($scope){
    $scope.List = [
        {Name: 'a'},{Name: 'b'}
    ];
}]);
于 2016-01-26T13:07:42.657 回答