Angularjs绑定事件的时间和位置
Angularjs When and Where to bind events
我仍在学习Angularjs,我想在动态模板上绑定事件,我应该在何时何地以Angularjs的方式进行绑定?除了直接把它放在模板中点击
//template
<div ng-repeat="person in people"><span class="person" id="{{person.id}}" >{{person.name}}</span></div>
//Jquery version
$('.person').click(function(){
//get attribute value
//do stuff
});
//Angular version - where should I put this
angular.element('.person').on('click', function() {
//get attribute value
//do stuff
});
在AngularJS中,您应该只关心视觉组件(指令)中的DOM。在其他任何地方,您都不应该了解DOM——有哪些元素,它们是如何组成的等等。这是Angular中最酷的事情之一——您可以在不更改JS的情况下更改模板。
所以这种分离是这里的关键。在AngularJS中,您应该将所有连接到DOM的内容直接放在模板中(附加事件侦听器、绑定到模型等)。
但是,在Directives中,您可以将事件侦听器绑定到DOM元素并解除绑定:
angular.directive('test', function() {
return {
restrict:'E',
link: function(scope, element,attr) {
element.on('click', function() { console.log(attr.value); })
}
}
}
不过,我想建议您考虑使用标准指令(ng-click
)来处理标准事件并绑定到控制器的方法。
为您准备了一个代码笔。希望能回答你的问题
Codepen
HTML:
<div ng-repeat="person in people">
<span class="person" id="{{person.id}}" click>{{person.name}}</span></div>
JS:
app.directive('click', function () {
return {
link: function (scope, element, attrs) {
element.bind('click', function () {
alert('Clicked on ID : '+ attrs.id);
});
},
};
});
相关文章:
- MongoDB找到$value存在的位置和时间戳$gte JS
- 如何获取SVG动画的当前时间/位置
- 如何找到声音的音乐位置和持续时间'精灵'
- RUM(真实用户监控)用户感知的负载时间和位置
- Javascript:获取行驶距离和时间,并在谷歌地图中显示当前位置
- 如何更改暂停的 html5 视频的当前时间并从该位置开始播放
- D3.js :仅当指针在同一位置停留最短时间时,才启动鼠标悬停事件
- 获取两个位置之间的距离和时间的功能
- 如何在JavaScript中输入日期和时间以及位置
- 如何将当前GPS导航器位置设置为destinationA的变量,以查找距离和时间
- 转换特定日期&基于用户位置的时间到utc日期&时间
- 打印给定位置的时间
- fullcalendar中删除的外部元素的结束时间没有'拖动到新位置之前不应用
- 使用javascript检测用户的位置和当前时间
- Angularjs绑定事件的时间和位置
- 将元素插入DOM,位置基于时间戳
- Jquery-在特定时间后自动移动滚动条到特定位置
- 推迟窗口.位置为AJAX留出时间
- 创建从时间a到时间b的光标位置范围
- 根据客户端位置设置日期时间