AngularJS打开Modal Pop-up报TypeError: a is not a function并卡死求助
解决方案
- 先修复版本不匹配问题
你的Angular主版本为1.8.2,但angular-cookies依赖仍为1.6.9,Angular官方生态的所有核心库必须和主版本完全对齐,先将bower.json中的angular-cookies版本改为1.8.2,清空bower缓存后重新安装依赖再测试。 - 验证动画触发根源
报错指向angular-animate的digest循环逻辑,页面卡死本质是触发了digest死循环。可以先在打开Modal的配置中新增animation: false参数临时禁用弹窗动画,若测试后不再卡死即可确认问题出在动画逻辑冲突上。 - 处理低版本兼容冲突
你使用的angular-ui-router-uib-modal版本为0.0.11,早已停止维护,和1.8.x版本的angular-animate存在已知兼容问题。可以选择两种修复方案:- 弃用该废弃组件,改用Angular UI Router原生支持的Modal路由实现逻辑
- 在项目config阶段给angular-animate添加类名过滤规则,屏蔽Modal相关元素的动画检测,代码示例:
angular.module('yourApp').config(function($animateProvider) { // 所有带modal类名的元素不触发动画逻辑 $animateProvider.classNameFilter(/^(?!.*modal).*$/); }); - 临时规避方案
若项目没有强依赖动画效果,可直接卸载angular-animate依赖,即可快速解决该报错卡死问题。
内容的提问来源于stack exchange,提问作者Amit
相关产品推荐
相关产品推荐

