Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/25.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 - Fatal编程技术网

Angularjs 从指令模板传递到控制器时未定义的ng repeat变量

Angularjs 从指令模板传递到控制器时未定义的ng repeat变量,angularjs,Angularjs,我有一个模板指令,在锚标记上使用ng repeat创建锚库。每个锚点还有一个ng click,单击该锚点时调用父控制器函数。向该函数传递ng repeat项 问题:在父控制器方法内访问此项时未定义 下面是一个模拟类似情况的测试场景 <testdirective func="show(x)" items="buttons"></testdirective> 您的指令应该绑定到一个控制器,如下所示进行更改 app.directive("testdirective", fun

我有一个模板指令,在锚标记上使用ng repeat创建锚库。每个锚点还有一个ng click,单击该锚点时调用父控制器函数。向该函数传递ng repeat项

问题:在父控制器方法内访问此项时未定义

下面是一个模拟类似情况的测试场景

<testdirective func="show(x)" items="buttons"></testdirective>

您的指令应该绑定到一个控制器,如下所示进行更改

app.directive("testdirective", function() {
  return {
    restrict: "E",
    controller: 'testController',
    template: '<button ng-repeat="item in items" ng-click="show(item)" id="submit" />{{item}}</button>',
    scope: {
      items: "=",
      func: '&'
    }

  };
});
演示

//代码在这里 var app=角度。模块“测试”,[]; app.controller'testController',函数$scope{ $scope.buttons=['b1','b2','b3','b4','b5']; $scope.show=functionx{ alertx; } } app.directivetestdirective,函数{ 返回{ 限制:E,, 控制器:“testController”, 模板:“{item}}”, 范围:{ 项目:=, func:“&” } }; }; 你好,普朗克!{{testValue}}
您需要进行两项更改

在index.html中引用函数:

    <testdirective func="show" items="buttons"></testdirective>
在testdirective中,按如下方式更改模板:

  template: '<button ng-repeat="item in items" ng-click="func()(item)" id="submit" />{{item}}</button>',
注意,ng click-first括号中的更改是获取对函数本身的引用,第二个是使用paramater调用函数

我还为你做了一把叉子:


请告诉我这是否是您想要实现的

是的,我理解,但这不是一个可重用的指令,因为它绑定到控制器,不是吗。不可重用是什么意思?不,您可以重用它。您已经显式地将它绑定到控制器:“testController”,因此它紧密耦合。太棒了!你从哪里得到这个把戏的:。我到处搜索,没有找到任何关于这种参数传递的引用。谢谢。