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

2025-03-10 22:47:01
推荐回答(2个)
回答1:

你需要把scope.myClick parse成一个function, 然后再调用它。
var fn = $parse(scope.myClick); //parse it as function
fn('123') //call the function.

你可以参照一个rightClick directive 的写法:
.directive("rightclick", ['$parse', function($parse, $scope) {
return {
restrict: 'A',
transclude: true,
scope:{
'rightclick': '&rightclick'
},
link: function(scope, element, attrs) {

element.bind('contextmenu', function(event) {
var fn = $parse(scope.rightclick); //parse it as function
scope.$apply(function() {
event.stopPropagation();
event.preventDefault();
fn();
});
});
}

};

}])

回答2:





test








  • {{item}}







主要在于12行的scope:false,这个是默认的,其实你不写也是false。这样drective继承了父scope,所以可以调用父作用域的方法,而声明新的scope即scope:{}形式就不会继承了,不过你依然可以用scope.$parent.myFunction()的方式调用。