Angularjs指令在link函数中没有响应事件绑定
angularjs directive not responding to event binding in link function
这是指。
我有两个简单的元素(restrict: "E"
)指令,incButtonOne
和incButtonTwo
,跟踪并显示它被点击的次数。它们都实现本地控制器并具有隔离作用域。这两个指令完成了同样的事情,但实现略有不同:
-
incButtonOne
的模板在标签中包含一个ng-click
指令,通过调用该指令的控制器 中的函数来方便点击计数。 -
incButtonTwo
实现了link
函数来注册一个click事件处理器,该处理器调用指令控制器 中的递增函数。
他们都工作。种。问题是incButtonTwo
的显示值仅在incButtonOne
被单击后更新,即值实际上是更新的(这可以通过取消第45行alert
语句的注释来确认),但直到执行一些其他操作才显示。
我只是想了解为什么会发生这种情况以及如何解决它。谢谢!
正如Stanislav Demydiuk所说,您必须使用$apply()
来更新绑定。使用你的"increment"函数,你得到的结果如下:
element.on("click", function() {
scope.$apply(increment);
});
注意:在您的示例中,如果单击第一个按钮使您的第二个按钮更新,这是因为ng-click事件,该事件被包装在$scope.$apply()
中(参见本文)。
当您手动注册事件处理程序时,您必须像这样手动调用scope.$apply()函数
link: function(scope, element) {
element.on('click', function() {
scope.$apply(function() {
scope.count++;
});
});
}
相关文章:
- 在Javascript中的ajax响应之后未调用Dropdown事件
- Ember视图未响应用户启动的事件
- 如何使用更新图像源以响应新闻事件
- 为什么我没有得到对Comet服务器流事件的实时响应
- 基于类的单击事件在10行之后不响应-数据表
- EventSource 的响应具有非“文本/事件流”的 MIME 类型(“文本/纯文本”)
- 为什么不是't html<对象>元素响应鼠标事件
- jquery多个事件响应
- 使用命名函数设置多个事件响应
- 加载超链接页面后如何响应事件
- 响应菜单问题-如何在移动环境中处理HREF和onclick事件
- 尝试使用鼠标点击事件响应编写jQuery HTML5聊天框程序
- 节点 js 中的请求和响应事件如何彼此不同
- 如何为每个 AJAX 请求/响应事件添加回调
- 主干模板中的 DOM 元素不响应事件
- 如何使用 socket.io 发出事件以响应事件
- JS函数不响应事件onclick
- 如何在不占用空间的情况下隐藏元素,同时还能响应事件
- Angularjs指令在link函数中没有响应事件绑定
- 只有第一个文件输入响应事件侦听器