Javascript AngularJS:transclude ng repeat INDER指令
我有一个指令,它可以转换原始内容,解析原始内容,并使用原始内容中的信息来帮助构建新内容。其要点如下: 指令('list',函数(){ 返回{ 限制:'E', 是的, templateUrl:“…”, 范围:正确, 控制器:函数($scope、$element、$attrs、$transclude){ 风险值项目; $transclude(功能(克隆){ clone=Array.prototype.slice.call(克隆); 项目=克隆 .filter(函数(节点){ 返回node.nodeType==1; }) .map(函数(节点){ 返回{ 值:node.getAttribute('value') 文本:node.innerHTML }; }); }); //在下面做一些关于物品信息的事情 } } }); 然后,我这样使用它:Javascript AngularJS:transclude ng repeat INDER指令,javascript,angularjs,angularjs-directive,angularjs-ng-transclude,Javascript,Angularjs,Angularjs Directive,Angularjs Ng Transclude,我有一个指令,它可以转换原始内容,解析原始内容,并使用原始内容中的信息来帮助构建新内容。其要点如下: 指令('list',函数(){ 返回{ 限制:'E', 是的, templateUrl:“…”, 范围:正确, 控制器:函数($scope、$element、$attrs、$transclude){ 风险值项目; $transclude(功能(克隆){ clone=Array.prototype.slice.call(克隆); 项目=克隆 .filter(函数(节点){ 返回node.nodeT
酒吧
库克斯
这一切都像这样运作良好。当我尝试在指令内容中使用ng repeat
时,就会出现问题,如下所示:
{{item.text}
当我尝试这样做时,没有项目。有人知道为什么这样做行不通,或者有没有更好的方法来完成同样的事情吗?你可以试试:
transcludeFn(scope, function (clone) {
iElem.append(clone);
})
有关更多详细信息:
HTML:
您应该让transcludFn知道您将在transcludeFn中使用哪个范围。如果您不想使用隔离作用域,您也可以尝试使用transcludeFn(作用域$parent…)这看起来可以解决您的问题。[[1]:有意思,我试试看。
<foo data-lists='[lists data here]'>
<li ng-repeat="list in lists">{{list.name}}</li>
</foo>
var Foo = function() {
return {
restrict: 'E',
template: '...'
transclude: true,
scope: { lists: '=?' }
link: function(scope, iElem, iAttrs, Ctrl, transcludeFn) {
transcludeFn(scope, function (clone) {
iElem.append(clone);
}
}
};
};
.directive('foo', Foo);