Javascript AngularJS:ngRepeat in指令包含转包内容
我试图将一个对象数组传递给一个指令,在指令内部使用ngRepeat以转置html的形式输出传递的项。这基本上是讨论的同一个问题 我尝试了一些不同的方法,使用了compile和link函数,但是我想我不能把我的思想集中在范围上。petebacondarwin建议的解决方案确实有效,但我需要(想要)将数组传递给指令 这是我目前的版本- 指令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
(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:
谢谢你的解释。