Javascript AngularJS:ngRepeat in指令包含转包内容

Javascript AngularJS:ngRepeat in指令包含转包内容,javascript,angularjs,angularjs-directive,angularjs-scope,angularjs-ng-transclude,Javascript,Angularjs,Angularjs Directive,Angularjs Scope,Angularjs Ng Transclude,我试图将一个对象数组传递给一个指令,在指令内部使用ngRepeat以转置html的形式输出传递的项。这基本上是讨论的同一个问题 我尝试了一些不同的方法,使用了compile和link函数,但是我想我不能把我的思想集中在范围上。petebacondarwin建议的解决方案确实有效,但我需要(想要)将数组传递给指令 这是我目前的版本- 指令 (function() { "use strict"; function MyDirective() { return { res

我试图将一个对象数组传递给一个指令,在指令内部使用ngRepeat以转置html的形式输出传递的项。这基本上是讨论的同一个问题

我尝试了一些不同的方法,使用了compile和link函数,但是我想我不能把我的思想集中在范围上。petebacondarwin建议的解决方案确实有效,但我需要(想要)将数组传递给指令

这是我目前的版本-

指令

(function() {
  "use strict";

  function MyDirective() {
    return {
      restrict: "E",
      scope: {
        items: "="
      },
      link: function link(scope, element, attrs) {
        var children = element.children();

        var template = angular.element('<div class="item" ng-repeat="item in items"></div>');
        template.append(children);

        var wrapper = angular.element('<div class="list"></div>');
        wrapper.append(template);

        element.html('');
        element.append(wrapper);
      }
    };
  }

  angular
    .module("app.MyDirective", [])
    .directive("myDirective", [MyDirective]);

}());
(函数(){
“严格使用”;
函数MyDirective(){
返回{
限制:“E”,
范围:{
项目:“=”
},
链接:功能链接(范围、元素、属性){
var children=element.children();
变量模板=角度元素(“”);
模板。追加(子项);
var wrapper=angular.element(“”);
append(模板);
html(“”);
元素。追加(包装器);
}
};
}
有棱角的
.module(“app.MyDirective”,[])
.指令(“我的指令”、[myDirective]);
}());
html

<my-directive items="main.items">
  <h1>{{item.title}}</h1>
  <p>{{item.content}}</p>
</my-directive>

{{item.title}
{{item.content}


感谢

指令中的代码未编译,因此它对用户不“可见”。这是因为代码没有被排除,但它在指令中被删除和替换

为了使Angular“可见”,您应该在
链接的末尾添加这行代码:

$compile(wrapper)(scope);
这将获取新的代码包装器,对其进行编译并将其链接到
范围

更新的PRUNKR:


谢谢你的解释。