首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >是否使用ng-click自动传递$event?

是否使用ng-click自动传递$event?
EN

Stack Overflow用户
提问于 2014-01-14 05:14:39
回答 2查看 145.1K关注 0票数 70

我知道,如果我像这样传入$event对象,就可以从ng-click访问click事件:

代码语言:javascript
复制
<button ng-click="myFunction($event)">Give me the $event</button>

<script>
  function myFunction (event) {
    typeof event !== "undefined" // true
  }
</script>

每次都必须显式地传递$event,这有点烦人。是否可以将ng-click设置为在默认情况下以某种方式将其传递给函数?

EN

回答 2

Stack Overflow用户

发布于 2014-08-05 15:39:37

ng-click中添加$event,例如:

代码语言:javascript
复制
<button type="button" ng-click="saveOffer($event)" accesskey="S"></button>

然后将jQuery.Event传递给回调:

票数 44
EN

Stack Overflow用户

发布于 2014-01-14 05:39:14

正如其他人所说,你实际上不能严格按照你的要求去做。也就是说,所有可用于angular框架的工具实际上也是可用的!这意味着您实际上可以编写自己的元素,并自己提供此功能。我写了一个这样的例子,你可以在下面的图中看到(http://plnkr.co/edit/Qrz9zFjc7Ud6KQoNMEI1)。

其中的关键部分是我定义了一个"clickable“元素(如果你需要老版本的IE支持,就不要这么做)。在代码中,如下所示:

代码语言:javascript
复制
<clickable>
  <h1>Hello World!</h1>
</clickable>

然后我定义了一个指令来获取这个可点击的元素,并将其转换成我想要的东西(自动设置我的点击事件):

代码语言:javascript
复制
app.directive('clickable', function() {
    return {
        transclude: true,
        restrict: 'E',
        template: '<div ng-transclude ng-click="handleClick($event)"></div>'
    };
});

最后,在我的控制器中,我准备好了click事件:

代码语言:javascript
复制
$scope.handleClick = function($event) {
    var i = 0;
};

现在,值得一提的是,这段代码硬编码了处理单击事件的方法的名称。如果你想消除这一点,你应该能够为指令提供点击处理程序的名称和"tada“-你有一个元素(或属性),你可以使用它,而且再也不用注入"$event”了。

希望这能有所帮助!

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21101492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档