Angularjs 从指令模板传递到控制器时未定义的ng repeat变量
我有一个模板指令,在锚标记上使用ng repeat创建锚库。每个锚点还有一个ng click,单击该锚点时调用父控制器函数。向该函数传递ng repeat项 问题:在父控制器方法内访问此项时未定义 下面是一个模拟类似情况的测试场景Angularjs 从指令模板传递到控制器时未定义的ng repeat变量,angularjs,Angularjs,我有一个模板指令,在锚标记上使用ng repeat创建锚库。每个锚点还有一个ng click,单击该锚点时调用父控制器函数。向该函数传递ng repeat项 问题:在父控制器方法内访问此项时未定义 下面是一个模拟类似情况的测试场景 <testdirective func="show(x)" items="buttons"></testdirective> 您的指令应该绑定到一个控制器,如下所示进行更改 app.directive("testdirective", fun
<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”,因此它紧密耦合。太棒了!你从哪里得到这个把戏的:。我到处搜索,没有找到任何关于这种参数传递的引用。谢谢。