zoukankan      html  css  js  c++  java
  • 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出错:Error: [ngRepeat:dupes]
    Error: [ngRepeat:dupes]这个出错提示具体意思是指数组中有2个以上的相同数字。
    ngRepeat不允许collection中存在两个相同Id的对象

    对于数字对象来说,它的id就是它自身的值,因此,数组中是不允许存在两个相同的数字的。为了规避这个错误,需要定义自己的track by表达式。

    例如:item in items track by item.id 或者 item in items track by fnCustomId(item)。嫌麻烦的话,直接拿循环的索引变量$index来用item in items track by $index

    使用第三方插件或者原生的js修改angular中的model或者view的值时,相应的model或者view的值不会变化,也就是angular的双向数据绑定失效
    angular有自己的一个上下文,所有与angular有关的代码执行(如双向数据绑定)都在这个上下文中进行,因此如果你用第三方插件或者原生的js进行操作时,此时代码是在javascript的上下文中执行,angular无法知道你是否修改model或者view的值,自然也就无法进行双向数据绑定。解决方案时在操作之后执行$scope.$apply()或者将操作的代码放在$scope.$apply(function(){//操作的代码...})
     angular中注入方式有推断式注入、$inject注入、内联式注入,当然这三种方式在angular中是等效的,但推断式注入对于压缩的 JavaScript 代码来说是不起作用的,因为压缩过后的 JavaScript 代码重命名了函数的参数名。  尽量不要用推断式注入,最佳是用内联式注入的方式。

    持续更新中...

  • 相关阅读:
    洛谷P1865 A%B Problem
    树状数组的操作
    树状数组的基础知识
    卡常优化中最为奇怪的操作
    inline的用法
    快速读入的方法
    P1059 明明的随机数及unique去重的用法
    P3376 网络最大流 【模板】
    Gym
    HDU
  • 原文地址:https://www.cnblogs.com/laixiangran/p/4938732.html
Copyright © 2011-2022 走看看