Javascript AngularJS指令和jQuery DOM事件绑定
我已经创建了一个指令,但我不太确定像Javascript AngularJS指令和jQuery DOM事件绑定,javascript,jquery,angularjs,Javascript,Jquery,Angularjs,我已经创建了一个指令,但我不太确定像element.bind(“click”,function(){})这样的绑定。每个指令的link函数都会被多次调用,每次调用都会产生一个重复的绑定。实现这一点的最佳方式是什么(即使单击绑定也可以作为属性使用) 每次我将ng视图更改为不同的模板时,globalCounter变量(以及click绑定?)都会增加 也许元素被破坏了,绑定也被破坏了,我不确定,也许这就是我的答案。我想你可以设置一个限制配置选项 首先,我们要设置restrict config选项。限制
element.bind(“click”,function(){})
这样的绑定。每个指令的link函数都会被多次调用,每次调用都会产生一个重复的绑定。实现这一点的最佳方式是什么(即使单击绑定也可以作为属性使用)
每次我将ng视图更改为不同的模板时,globalCounter变量(以及click绑定?)都会增加
也许元素被破坏了,绑定也被破坏了,我不确定,也许这就是我的答案。我想你可以设置一个限制配置选项 首先,我们要设置restrict config选项。限制选项 用于指定如何在页面上调用指令 正如我们之前看到的,有四种不同的方式来调用指令, 因此,有四个有效的限制选项:
'A' - <span ng-sparkline></span>
'E' - <ng-sparkline></ng-sparkline>
'C' - <span class="ng-sparkline"></span>
'M' - <!-- directive: ng-sparkline -->
'A'-
‘E’-
‘C’-
“M”——
您没有在单击事件中放置计数器。另外,对于具有该指令的元素,不需要jQuery选择器
app.directive("myDirective", function()
{
return {
link: function(scope, element, attrs) {
element.bind("click", function () {
// Click event here
});
}
}
});
你的假设并不完全正确。每个指令声明调用一次指令链接函数。因此,click所附着的元素是不同的。因此,每个功能都作用于不同的控件 您仍然可以执行基于css选择器的单击操作绑定,但是应该在父级上定义该指令
此外,当视图更改时,DOM将被销毁,因此旧的绑定将被删除。我写了一个小例子来说明这个问题
并在这里修复一些与范围有关的问题请在演示后贴上小提琴或弹琴,您已经试过了,但仍然存在相同的问题。link函数被称为multible time。每次对元素进行新绑定时……如何将其绑定到元素?您可以显示包含该指令的HTML代码段吗?只需保留此代码,以使此示例更简单。
app.directive("myDirective", function()
{
return {
link: function(scope, element, attrs) {
element.bind("click", function () {
// Click event here
});
}
}
});