angularJS常见问题汇总
问题描述
|
解决方案
|
当你简单的动态给页面插入html时,
此时html带有angular的语法不会执行的。
var uploadInfo = '上传成功!<a ng-click="quitTo('customer')">点击</a>跳转到客户列表界面';
angular.element('.modal-body').append(uploadInfo);
此时ng-click不会执行
|
将uploadInfo通过$compile进行处理,
var ele = $compile(uploadInfo)($scope);
angular.element('.modal-body').append(ele);
任何指令的生效都需要compile,这一步在app启动的时候angular先帮你做了,
但你插入的html是没有经过compile这个步骤的,所以你手动compile下即可。
|
使用ng-repeat出错:
|
ngRepeat不允许collection中存在两个相同Id的对象 对于数字对象来说,它的id就是它自身的值,因此,数组中是不允许存在两个相同的数字的。为了规避这个错误,需要定义自己的track by表达式。 例如: |
使用第三方插件或者原生的js修改angular中的model或者view的值时,相应的model或者view的值不会变化,也就是angular的双向数据绑定失效
|
angular有自己的一个上下文,所有与angular有关的代码执行(如双向数据绑定)都在这个上下文中进行,因此如果你用第三方插件或者原生的js进行操作时,此时代码是在javascript的上下文中执行,angular无法知道你是否修改model或者view的值,自然也就无法进行双向数据绑定。解决方案时在操作之后执行$scope.$apply()或者将操作的代码放在$scope.$apply(function(){//操作的代码...}) |
angular中注入方式有推断式注入、$inject注入、内联式注入,当然这三种方式在angular中是等效的,但推断式注入对于压缩的 JavaScript 代码来说是不起作用的,因为压缩过后的 JavaScript 代码重命名了函数的参数名。 | 尽量不要用推断式注入,最佳是用内联式注入的方式。 |
持续更新中...
关注我,领取免费的前端学习资料,获取1个月免费VIP服务(包括简历优化、模拟面试、基础突击、大牛1v1辅导等)
转载请注明出处,谢谢!