背景:
当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();

               },

10-06 00:29