Javascript 传递具有独立作用域的函数参数,并使用角度指令共享作用域

Javascript 传递具有独立作用域的函数参数,并使用角度指令共享作用域,javascript,angularjs,Javascript,Angularjs,我有3个带隔离作用域和共享作用域的指令,我想在最外层和最内层指令之间传递一个函数。外部和中间有隔离作用域,中间和内部共享作用域。有什么建议吗 传递我的控制器的功能,如下所示 <outer on-edit="helloWorld" ng-model="model" ng-repeat="items in items.objects" ></outer> 在我的控制器中: $scope.helloWorld = function(){ alert('Hello w

我有3个带隔离作用域和共享作用域的指令,我想在最外层和最内层指令之间传递一个函数。外部和中间有隔离作用域,中间和内部共享作用域。有什么建议吗

传递我的控制器的功能,如下所示

<outer on-edit="helloWorld" ng-model="model" ng-repeat="items in items.objects" ></outer> 在我的控制器中:

$scope.helloWorld = function(){ alert('Hello world'); } $scope.helloWorld=函数(){ 警报(“你好世界”); } 我的指示:

angular.module('myApp') .directive('outer', function () { return { restrict: 'E', replace: true, scope: { item: "=ngModel", onEdit: '&' }, template: '<div><middle on-edit='onEdit'></middle></div>', controller : function($scope){ $scope.edit = function(){ $scope.onEdit()(); } } }; }) .directive('middle', function () { return { restrict: 'E', replace: true, scope: { item : '=ngModel', onEdit : '&' }, templateUrl: '<div><inner on-edit='onEdit'></inner></div>' }; }) .directive('inner', function () { return { restrict: 'E', template: '<div><a ng-click='edit()'>Edit</a></div>' }; }) angular.module('myApp') .directive('outer',function(){ 返回{ 限制:'E', 替换:正确, 范围:{ 项目:“=ngModel”, onEdit:“&” }, 模板:“”, 控制器:功能($scope){ $scope.edit=函数(){ $scope.onEdit(); } } }; }) .指令('middle',函数(){ 返回{ 限制:'E', 替换:正确, 范围:{ 项目:'=ngModel', onEdit:“&” }, templateUrl:“” }; }) .指令('内部',函数(){ 返回{ 限制:'E', 模板:“编辑” }; }) 这不管用,有什么想法吗


谢谢

虽然这看起来是一个糟糕的设计,但是在中间指令的模板中,你使用的内部指令如下:

<div><inner on-edit='onEdit'></inner></div>

如果您查看它,内部指令没有作用域,因此edit上的属性在这里没有意义

若要使用中间指令中存在的任何方法,由于共享范围的原因,可以直接在内部指令中使用。将内部指令视为编写在其他html文件中的html的一部分,这些文件将在运行时被替换。
所以,传递给中间指令的任何内容都会隐式传递给内部指令

我从内部指令中删除了函数的代码,但仍然不起作用。它起作用了!ng click函数的名称有问题。。。您必须将edit()替换为onEdit()