背景:
当AngularJS中的指令代码中发生某些事情时,我试图运行回调。
相关代码:
HTML格式:
<img-cropper onselect="updateAvatarData" x="100" y="100" src="{{tempAvatar}}" id="avatarCropper"/>
控制器:
$scope.updateAvatarData = function(c){
alert("¡¡¡Funciona!!!!");
};
指令:
<<more code up here>>
link: function(scope,element, attr) {
scope.wsId = attr.id+'WS';
scope.pvId = attr.id+'preview';
scope.x = attr.x;
scope.y = attr.y;
scope.aspectRatio = scope.x/scope.y;
scope.previewStyle = "width:"+scope.x+"px;height:"+scope.y+"px;overflow:hidden;";
scope.onSelectFn = scope.$eval(attr.onselect);
<<more code down here>>
问题出在最后一行“scope.onSelectFn=scope.eval(attr.onselect);”。“scope.$eval(attr.onselect);”返回“undefined”。onselect工作正常,它返回在“onselect”属性上键入的函数名。
我已经通过attibutes传递了其他指令,但没有问题,但无法找到我在这里做错了什么。
提前谢谢
最佳答案
为什么你这样做的时候,你可以很容易地使用'&'功能与角度
calling method of parent controller from a directive in AngularJS
如果你想像这样调用父函数,那么你应该使用$parse而不是eval当使用
link: function (scope,element,attrs) {
var parentGet = $parse(attrs['onselect']);
var fn = parentGet(scope.$parent);
fn();
},