加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – 将$event传递给ng-click,但事件未定义

发布时间:2020-12-17 08:33:03 所属栏目:安全 来源:网络整理
导读:在我的控制器中,在单击事件时,我向页面添加一个指令,该指令将能够调用controllerFunc $scope.addDirective = function(e,instance){ $scope.instance = instance; $(e.currentTarget.parentElement).append($compile('my-directive myfunc="controllerFunc($
在我的控制器中,在单击事件时,我向页面添加一个指令,该指令将能够调用controllerFunc
$scope.addDirective = function(e,instance){
   $scope.instance = instance;
   $(e.currentTarget.parentElement).append($compile('<my-directive myfunc="controllerFunc($event)" mydata={{instance}}/>')($scope));
}

在我的指令中,我进行了设置,以便在click事件(通过myfunc:&)上调用controllerFunc,并尝试通过$event传递click事件

app.directive('myDirective',function(){
        return {
         restrict: 'AE',scope: {
           mydata: '@',myfunc: "&"

         },template: '<div class="row"><div class="col-4" ng-click="myfunc($event)"></div></div>',link: function(scope,elem,attrs){
             //ommitted

         }

        }
}

当我单击相关的div时,在控制器中调用controllerFunc,但事件被认为是未定义的.

$scope.controllerFunc = function(e){
       //called on the click event but e is undefined
 }

有没有办法在这种情况下通过ng-click传递事件(即我在dom中添加了一个带有ng-click事件的模板?看起来它应该可以工作(因为click事件会触发函数)但是在controllerFunc中没有事件

在控制器功能内部,请注意参数的名称
'<my-directive myfunc="controllerFunc($event)" mydata={{instance}}/>')($scope));

它当前是“$event”,这不是一个使用$event关键字的函数,它只是一个有参数的函数,你必须提供它.为清楚起见,我会将$event更改为event.

现在,在你完成之后,你可以转到你的指令,并在你的指令的模板中,你设置ng-click param就像这样

template: '<div class="row"><div class="col-4" ng-click="myfunc($event)"></div></div>',

ng-click将调用&函数,但为了将它绑定到正确的参数,你必须使用稍微不同的语法,并匹配它应该匹配的参数的名称,所以

ng-click="myfunc($event)"

ng-click="myfunc({event: $event})"

假设您已将原始$事件更改为事件.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读