有一个需求,需要在指令中调用指令所在controller里的方法,我举个简单的例子,代码如下:Documentcontroller和directive的代码如下:varapp=angular.module('myApp',[]);app.controller('myCtrl',function($scope){$scope.click=function(param){console.log(param);}}app.directive('myDir',function(){return{restrict:'AE',replace:true,template:'',scope:{myClick:'&'},link:function(scope,elem,attr){scope.inputClick=function(){scope.myClick("123");}}}});使用这种方式,倒是可以调用到controller里的click方法,但是参数没法传递过去,打印出来的param始终是undefined,是不是我这种调用方式压根就是错误的啊,那么如何应对这种需求呢,求大神指教,在线等,谢了!!!
2 回答
蝴蝶不菲
TA贡献1810条经验 获得超4个赞
你需要把scope.myClickparse成一个function,然后再调用它。varfn=$parse(scope.myClick);//parseitasfunctionfn('123')//callthefunction.你可以参照一个rightClickdirective的写法:.directive("rightclick",['$parse',function($parse,$scope){return{restrict:'A',transclude:true,scope:{'rightclick':'&rightclick'},link:function(scope,element,attrs){element.bind('contextmenu',function(event){varfn=$parse(scope.rightclick);//parseitasfunctionscope.$apply(function(){event.stopPropagation();event.preventDefault();fn();});});}};}])
添加回答
举报
0/150
提交
取消