Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/21.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
Angularjs 在ng repeat中创建指令_Angularjs_Directive - Fatal编程技术网

Angularjs 在ng repeat中创建指令

Angularjs 在ng repeat中创建指令,angularjs,directive,Angularjs,Directive,我有一个指令,我想用它来生成其他指令。以下操作不起作用: <span ng-repeat="picker in pickers | filter:{type:'click'}"> <span picker.name></span> </span> 我们有一个选择器指令,它基本上通过选择器循环,并尝试为每个选择器创建一个自定义指令: <span ng-repeat="picker in picker

我有一个指令,我想用它来生成其他指令。以下操作不起作用:

    <span ng-repeat="picker in pickers | filter:{type:'click'}">
      <span picker.name></span>
    </span>
我们有一个选择器指令,它基本上通过选择器循环,并尝试为每个选择器创建一个自定义指令:

        <span ng-repeat="picker in pickers">
          {{picker.name}}
          <span {{picker.name}}></span>
        </span>

{{picker.name}
每个选择器(Local、Dropbox、Googledrive)都声明了一个指令,我想从我的主选择器指令中使用这个指令


谢谢

最好的解决方案似乎是在指令中使用“编译”:

directive.html:

<span id='pickerButtons'></span>
    'compile': function(element, attributes) {

        var pickerButtons = document.querySelector('#pickerButtons');
        var span = document.createElement('span');
        span.innerHTML = '';

        for (var i=0,  tot=pickerService.pickers.length; i < tot; i++) {
            if(pickerService.pickers[i].type === 'button'){
                span.innerHTML += '<span><span picker-' + pickerService.pickers[i].name + '></span></span>';
            }
        }

        pickerButtons.appendChild(span);

        var linkFunction = function($scope, element, attributes) {
            $scope['pickFrom'] = function(pickerObject){pickerService.pickFrom(pickerObject);};
            $scope['pickList'] = pickerService.getPickList();
        };

        return linkFunction;
    }

directive.js:

<span id='pickerButtons'></span>
    'compile': function(element, attributes) {

        var pickerButtons = document.querySelector('#pickerButtons');
        var span = document.createElement('span');
        span.innerHTML = '';

        for (var i=0,  tot=pickerService.pickers.length; i < tot; i++) {
            if(pickerService.pickers[i].type === 'button'){
                span.innerHTML += '<span><span picker-' + pickerService.pickers[i].name + '></span></span>';
            }
        }

        pickerButtons.appendChild(span);

        var linkFunction = function($scope, element, attributes) {
            $scope['pickFrom'] = function(pickerObject){pickerService.pickFrom(pickerObject);};
            $scope['pickList'] = pickerService.getPickList();
        };

        return linkFunction;
    }
“编译”:函数(元素、属性){
var pickerButtons=document.querySelector(“#pickerButtons”);
var span=document.createElement('span');
span.innerHTML='';
for(var i=0,tot=pickerService.pickers.length;i
这是有效的属性名称吗?根据AngularJS约定,它应该是选择器名称。是否有名为pickerName的指令?是的,它是一个有效的属性名。{{picker.name}}打印正确的指令名,但如果我打印,picker.name不会被正确的指令名替换。据我所知,您不能使用范围变量动态形成HTML属性名。请提供更多代码以更好地演示您试图完成的任务。谢谢,请查看更新的问题看起来我应该利用指令编译