Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/434.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AngularJS:transclude ng repeat INDER指令_Javascript_Angularjs_Angularjs Directive_Angularjs Ng Transclude - Fatal编程技术网

Javascript AngularJS:transclude ng repeat INDER指令

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

我有一个指令,它可以转换原始内容,解析原始内容,并使用原始内容中的信息来帮助构建新内容。其要点如下:

指令('list',函数(){ 返回{ 限制:'E', 是的, templateUrl:“…”, 范围:正确, 控制器:函数($scope、$element、$attrs、$transclude){ 风险值项目; $transclude(功能(克隆){ clone=Array.prototype.slice.call(克隆); 项目=克隆 .filter(函数(节点){ 返回node.nodeType==1; }) .map(函数(节点){ 返回{ 值:node.getAttribute('value') 文本:node.innerHTML }; }); }); //在下面做一些关于物品信息的事情 } } }); 然后,我这样使用它:


酒吧
库克斯
这一切都像这样运作良好。当我尝试在指令内容中使用
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);