Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.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 在指令之间传递控制器函数_Angularjs - Fatal编程技术网

Angularjs 在指令之间传递控制器函数

Angularjs 在指令之间传递控制器函数,angularjs,Angularjs,我有一组两个指令,它们递归地互相调用以呈现树结构 我需要向这些指令传递一个控制器函数引用,因此它们需要依次传递彼此的引用。除了参数之外,它似乎还起作用 将引用传递到指令: <item-list items="data" functionreference="controllerfunction(name)"></item-list> 声明和传递函数引用的正确方法是什么?在您的项目列表中模板: template: '<ul><item ng-repea

我有一组两个指令,它们递归地互相调用以呈现树结构

我需要向这些指令传递一个控制器函数引用,因此它们需要依次传递彼此的引用。除了参数之外,它似乎还起作用

将引用传递到指令:

<item-list items="data" functionreference="controllerfunction(name)"></item-list>


声明和传递函数引用的正确方法是什么?

在您的
项目列表中
模板:

template: '<ul><item ng-repeat="item in items" item="item" functionreference="functionreference(name)'
它应该很好用

更新:
对于
指令中附加的
  • ,同样适用:

    <item-list items="item.children" functionreference="functionreference({name:name})"></item-list>
    // Instead of: functionreference(name)
    
    
    //而不是:functionreference(名称)
    


    另请参见此

    您必须确保使用。确保在如下所示的两个位置完成编辑

    使用
    functionreference=“functionreference({name:name})”
    只要您想在指令中使用控制器函数

    myApp.directive('itemList', function ($compile) {
        return {
            restrict: 'E',
            template: '<ul><item ng-repeat="item in items" item="item" ' +  
                      'functionreference="functionreference({name:name})"> ' + 
                      '</item></ul>',
            scope: {
                items: '=',
                functionreference: '&'
            }
        };
    });
    
    myApp.directive('itemList',函数($compile){
    返回{
    限制:'E',
    模板:“
      ”+ “
    ”, 范围:{ 项目:“=”, functionreference:“&” } }; });

    $element.append('
  • {{item.name}}}['+ “/”+//确实有效 ']'+//不起作用 “
  • ”);
    在视图中使用时,
    controllerfunction(name)
    中的
    名称是什么?我从这个问题中得到了答案:。您应该传递函数和参数的名称。然后,在调用函数时,必须使用这些名称:$scope.functionreference({paramname:value})。它在这个问题的例子中起作用。。。但不是在我的:-(当调用控制器函数时,更新的演示不适用于儿童。此更新必须在两个地方进行。我应该编辑您的答案。:@user280767确实(但您明白了):)我更新了答案和演示(以防有人遇到相同的问题)。
    
    tempate: '<ul><item ng-repeat="item in items" item="item" functionreference="functionreference({name: name})'
    
    <item-list items="item.children" functionreference="functionreference({name:name})"></item-list>
    // Instead of: functionreference(name)
    
    myApp.directive('itemList', function ($compile) {
        return {
            restrict: 'E',
            template: '<ul><item ng-repeat="item in items" item="item" ' +  
                      'functionreference="functionreference({name:name})"> ' + 
                      '</item></ul>',
            scope: {
                items: '=',
                functionreference: '&'
            }
        };
    });
    
    $element.append('<li>{{item.name}} [   ' +
                    '<a href="#" ng-click="directivefunction(item.name)">directivefunction</a> / ' + // DOES work
                    '<a href="#" ng-click="functionreference({name:item.name})">functionreference</a>]' + // Does NOT work
                                '<item-list items="item.children" functionreference="functionreference({name:name})"></item-list></li>');