jQueryAjax请求如何触发单击指令
我一直在移动应用程序中混合使用JQuery和Angular。我偶尔会遇到一个非常奇怪的错误 带有角度指令的元素位于使用jQueryAjax请求如何触发单击指令,jquery,ajax,angularjs,angularjs-directive,angularjs-scope,Jquery,Ajax,Angularjs,Angularjs Directive,Angularjs Scope,我一直在移动应用程序中混合使用JQuery和Angular。我偶尔会遇到一个非常奇怪的错误 带有角度指令的元素位于使用ng include指令包含的部分中: <ng-include src="'../partials/_childnav.html'" autoscroll=""></ng-include> <div class="nav-home"></div> <div class="nav-back" ng-click="navBack
ng include
指令包含的部分中:
<ng-include src="'../partials/_childnav.html'" autoscroll=""></ng-include>
<div class="nav-home"></div>
<div class="nav-back" ng-click="navBack()"></div>
然后调用navBack()。如果我同时删除了这两个,bug就不会发生(显然这不是一个解决方案)
编辑:使用click处理程序而不是ng click
指令会产生相同的结果,因此会触发div上的click事件
我很想得到一个解释,说明这实际上是如何发生的,这种行为对我来说简直是荒谬的。这原来是开发环境的问题(AppGyver类固醇)。我可以通过使用构建版本和JS库版本的某些组合来解决这个问题,但这个错误存在于封闭的源代码中,开发人员不愿意调查,所以这个问题不会得到解决。ajax调用的回调中有什么内容(成功和错误)?您是否尝试在代码中设置断点并查看调用堆栈以找出调用这些方法的原因?混合使用jQuery和Angular可能会产生一些非常奇怪的结果-Angular需要运行
$digest
循环才能将视图绑定回模型-jQuery的$。ajax
不会触发循环,因此,它必须手动触发。如果要在$.ajax
中附加HTML,则必须根据$scope
编译该HTML,否则无法访问角度方法。请使用$http服务进行ajax调用。没有理由不这样。我们需要一些最有可能提供帮助的fiddle/plunker。@Simon,除了fluff之外,成功处理程序只是清理响应中的结果并将其附加到范围变量。然后我使用if(!$scope.$$phase)$scope.$apply()
以获得角度来发挥其魔力(该变量用于html中的ng repeat
)。故障处理程序应该显示一条错误消息(在div中),但此时它只是在写日志消息。所有这些实际上都正常工作,只是偶尔当它完成得太快时,单击事件会在div上触发?!
<div class="nav-home"></div>
<div class="nav-back" ng-click="navBack()"></div>