猿问

请教一个angularjs中在指令调用controller方法的问题

有一个需求,需要在指令中调用指令所在controller里的方法,我举个简单的例子,代码如下:
Document
controller和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,是不是我这种调用方式压根就是错误的啊,那么如何应对这种需求呢,求大神指教,在线等,谢了!!!
红颜莎娜
浏览 385回答 2
2回答

蝴蝶不菲

你需要把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();});});}};}])
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答