首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在angularjs中如何访问触发事件的元素?

在angularjs中如何访问触发事件的元素?
EN

Stack Overflow用户
提问于 2012-10-21 11:31:05
回答 2查看 165.9K关注 0票数 94

我在我的web应用中同时使用Bootstrap和AngularJS。我很难让这两个人一起工作。

我有一个元素,它的属性是data-provide="typeahead"

代码语言:javascript
复制
<input id="searchText" ng-model="searchText" type="text"
       class="input-medium search-query" placeholder="title"
       data-provide="typeahead" ng-change="updateTypeahead()" />

当用户在字段中输入时,我希望更新data-source属性。函数updateTypeahead被正确触发,但我不能访问触发事件的元素,除非我使用$('#searchText'),这是jQuery方式,而不是AngularJS方式。

让AngularJS与旧式JS模块协同工作的最佳方式是什么?

EN

回答 2

Stack Overflow用户

发布于 2013-02-14 05:59:53

访问触发事件的元素的一般角度方法是编写一个指令并将()绑定到所需的事件:

代码语言:javascript
复制
app.directive('myChange', function() {
  return function(scope, element) {
    element.bind('change', function() {
      alert('change on ' + element);
    });
  };
});

或者使用DDO (根据@tpartee下面的评论):

代码语言:javascript
复制
app.directive('myChange', function() {
  return { 
    link:  function link(scope, element) {
      element.bind('change', function() {
        alert('change on ' + element);
      });
    }
  }
});

上述指令的用法如下:

代码语言:javascript
复制
<input id="searchText" ng-model="searchText" type="text" my-change>

Plunker

在文本字段中键入,然后离开/blur。change回调函数将被触发。在回调函数中,您可以访问element

一些内置指令支持传递$event对象。例如,ng-*click,ng-Mouse*。请注意,ng-change不支持此事件。

尽管您可以通过$event对象获取元素:

代码语言:javascript
复制
<button ng-click="clickit($event)">Hello</button>

$scope.clickit = function(e) {
    var elem = angular.element(e.srcElement);
    ...

这是“与角度相反的方式”-- Misko

票数 75
EN

Stack Overflow用户

发布于 2013-09-27 14:27:36

如果您想要ng-model值,如果您可以在触发的事件中这样写:$scope.searchText

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

https://stackoverflow.com/questions/12994710

复制
相关文章

相似问题

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