0、关于Ng-app

    通过ngApp指令来引导Angularjs应用是一种简洁的方式 ,适合大多数情况。在高级开发中,例如使用脚本装载应用,您也可以使用Bootstrap手动引导AngularJs应用。

1、ngModel实现Select

具体参见 AngularJs实现无限级下拉Select。

2、在$ scope域外调用$ scope的方法

element = document.querySelector('[ng-controller=help_controller]');

var $scope = angular.element(element).scope();

......

$scope.$apply();

3、Controller尽量不要取相同的名字;

4、ng-repeat有重复值的解决办法

当你传入下面这个数组到Ng-repeat中去的时候就会报错,因为有重复数据,怎么办呢,看下面:

$scope.items = ['red','grey','grey'];

上面的grey明显是数组中重复的数据,传入下面Html中:

<li ng-repeat="item in items" ng-bind="item"></li>

就会报错:

Error: [ngRepeat:dupes]

http://errors.angularjs.org/1.2.28/ngRepeat/dupes?p0=itemNaNn%items&p1=string%3Agrey&p2

=%22grey%22

说你的数据有重复的,解决方案如下:

<li ng-repeat="item in items track by $index" ng-bind="item"></li>

5、ng-Class的使用

第一种:

<span ng-class="{'glyphicon glyphicon-plus': impress.plus, 'glyphicon glyphiconminus':

impress.minus}" ng-click="swiftTitle(impress)" ></span>

你可以通过ng-click方法来改变impress对象中对应的属性的True或者false,为True的时候就显示对应的

Class。

第二种:

<div ng-class="{true: 'label-item-content container-fluid label-group-skin', false:

'label-item-content container-fluid'}[iseditor]" ng-show="impress.isshow">

当iseditor的值为True时显示第一个,否则显示第二个。

6、Angular中使用a标签

当你像这样

<a href="javascript:void;"></a>

就会报语法错误,最好写成

<a href="javascript:;"></a>

7、angular.forEach

angular自带的遍历方法,在一种特殊的情况下,会出现少遍历的情况,如下:

angular.forEach($scope.deleteSelected,function(value,key){

var len = $scope.myInitLabel.length;

for(var i=0;i<len;i++){

if(value.id === $scope.myInitLabel[i].id){

$scope.myInitLabel.splice(i,1);

}

}

})

上面代码中,如果执行删除原集合中的选项,在For循环中的Len长度并没有随着你删除选项执行而

改变(事实上,你删除了一个,原先在第二位的移到第一位,这个时候再想删除原先第二个就不行

,因为他实际上已经到第一位去了。)

解决方案:

angular.forEach($scope.deleteSelected,function(value,key){

for(var i=0;i<$scope.myInitLabel.length;i++){

if(value.id === $scope.myInitLabel[i].id){

$scope.myInitLabel.splice(i,1);

}

}

})

就是把集合写在循环中,实时更新集合长度。

8、ng-hide/ng-show

ng-hide/ng-show是控制显示隐藏的,但是有一个情况是:当你显示A的时候,不想显示B;显示B的时

候不想显示A;

<div class="label-search-common ">
    <div class="btn btn-default" ng-click="changeMainWindow()" ng-hide="deleteMask" ngshow="
    ismainwindow">
        <span class="glyphicon glyphicon-plus"></span> <span></span>
    </div>
    <div class="btn btn-default" ng-hide="ismainwindow" ng-click="changeMainWindow()">
        <span class=""></span>
    </div>
</div>
<div class="label-search-common ">
    <div class="btn btn-default" ng-hide="deleteMask" ng-show="ismainwindow"

ng-click="showDeleteMask()">
        <span class=" glyphicon glyphicon-minus"></span> <span></span>
    </div>
    <div class="btn btn-default" ng-show="deleteMask" ng-click="deleteLabel();">
        <span class=""></span>
    </div>
    <div class="btn btn-default" ng-show="deleteMask" ng-click="showDeleteMask();">
        <span class=""></span>
    </div>
</div>

上面这两个Div就是这种情况,我省略了它们关联的Div,这样,在切换deleteMask或者

ismainwindow的时候不会影响到他们内部的Div的显示与隐藏

9、只取一次数据函数

$scope.changeSelect1 = function(info){

$scope.selectInfo2 = [];

if(typeof $scope.initSelectInfo2 != "object"){

labelCommonServices.test2Service({},function(response){

$scope.initSelectInfo2 = response;

angular.forEach(response,function(value,key){

if(info&&info.code&&(value.forcode == info.code))

$scope.selectInfo2.push(value);

})

},function(response,status){ console.log("dd")});

}else{

angular.forEach($scope.initSelectInfo2,function(value,key){

if(info&&info.code&&(value.forcode == info.code))

$scope.selectInfo2.push(value);

})

}

}

10、想要取消让checkbox清零,遍历数组把Current设置为False就行

<input type="checkbox" name="{{fi.field}}" value="{{fi.field}}" ng-model="fi.current">

<span ng-bind="fi.describe" class="common-extract-table-span"></span>

11、路由项目默认进入根目录中的Index.html


12、指令的 scope中的变量不能有大写,controller一般都是用来放公用方法,link是用来做dom绑定操作的

13.关于路由

针对老式浏览器可以使用标签模式,针对现代浏览器可以使用HTML5模式。

前者在URL中使用#来防止页面刷新,同时形成浏览器历史记录。具体形式如下

http://yoursite.com/#!/inbox/all

AngularJS支持的另外一种路由模式是 html5 模式。在这个模式中,URL看起来和普通的URL

一样(在老式浏览器中看起来还是使用标签的URL)。例如,同样的路由在HTML5模式中看起来

是这样的:

http://yoursite.com/inbox/all

在AngularJS内部, $location 服务通过HTML5历史API让应用能够使用普通的URL路径来

路由。当浏览器不支持HTML5历史API时, $location 服务会自动使用标签模式的URL作为替代

方案。

两者之间的切换通过$locationProvider.html5Mode进行切换。

14.Radio的最佳实践

<div class="row-right">
    <input id="man" class="hideinput" ng-checked="myForm.sex == 1" type="radio" ng-model="myForm.sex" name="sex" value="1" />
    <span class="radio-span man" ng-class="{'active':myForm.sex == 1}" ng-click="selectRadio('man')">男</span>
    <input id="women" class="hideinput" ng-checked="myForm.sex == 2" type="radio" ng-model="myForm.sex" name="sex" value="2" />
    <span class="radio-span women" ng-class="{'active':myForm.sex == 2}" ng-click="selectRadio('women')">女</span>
</div>
$scope.selectRadio = function (type) {
            if (type == 'man') {
                $scope.myForm.sex = 1;
            } else {
                $scope.myForm.sex = 2;
            }
            /*  $('.row-right .radio-span').removeClass('active') && $('.row-right .'+type).addClass('active');
              $('.row-right input[type="radio"]').removeAttr('checked') && $('#' + type).attr('checked', 'checked');*/
        }

15.ngmodel写法注意

ngModel必须有 [  .  ]避免原型链继承的坑;即不能直接赋值为$scope上的基本类型;需包含一个点,即“userinfo.name”;

 16. angularjs ng-cloak避免Dom加载时闪烁

 17. ng-if 不能用来控制Dom的显示与隐藏,应该用Ng-show、ng-hide来控制。因为ng-if的显示与隐藏是删除与新建Dom节点,而Ng-show与ng-hide则是控制样式来显示与隐藏。

18、动态配置路由

  A .

$stateProvider.state('contacts', {
  url:'/contacts/:id'
  templateUrl: function (stateParams){
    return '/partials/contacts.' + stateParams + '.html';
  }
})

B.

用Ajax请求后台的路由信息,用Angular.forEach遍历组装。注意要同步Ajax,并且遍历所有的路由,不能写一部分传一部分。

结构-行为-样式-angularJs笔记的更多相关文章

  1. 结构-行为-样式 - Angularjs 环境下Ztree结合JqueryUI实现拖拽

    新的项目中有一个需求是要求客户标签可以自定义,于是就想到了客户体验,让客户自己拖拽标签进行组合查询.但是理想很丰满,现实很骨感.一开始就遇到了问题,各个插件之间的结合问题,折腾一翻之后终于实现了这个功 ...

  2. 结构-行为-样式-Css笔记

     0.常见的行级元素和块级元素: 行级元素:div,table,form ,ul,ol,p,h1-h6,hr; 块级元素:a,select,input,textarea,img,label,br,i, ...

  3. 结构-行为-样式-angularJs 指令实现滚动文字

    最近在做XX项目的大屏展示页面,有一个表格需要用到这个滚动效果,于是就写了个指令,记录下,共同学习. Html代码: <td word-roll tword="item"&g ...

  4. 结构-行为-样式-angularJs 指令解决IE下无PlaceHolder的问题

    最近项目开发的时候遇到一个头疼的问题,在测试IE兼容性的时候,发现placeholder在IE下无效.查网上说也是有各种解决方案,但是都不是我想要的,于是决定自己写一个.思路:placeHolder是 ...

  5. 结构-行为-样式-PS笔记

    1.矩形选框,按住Shift就可以成为正圆或者正方形.按住ALt就可以控制圆心的位置: 2.美颜:滤镜--模糊--回到开始--历史记录工具,去掉不要的地方. 3.套索工具双击闭合:4.钢笔工具是做选区 ...

  6. 结构-行为-样式-Javascript笔记

    一.console.dir()可以显示一个对象所有的属性和方法. 二.递归遍历一个数据集合: A.数据: {  "menu": [    {      "menuId&q ...

  7. 结构-行为-样式-Bootstrap笔记

    1.自上而下的内容布局,中间内容可变,应该用: <div class=" container-fluid"> <div class=" row" ...

  8. 结构-行为-样式-angularJs ngAnimate(Js实现)

    声明 页面 Js 注意事项 官方链接 一.声明 注意animate的版本要与Angular的一致. <script src="jquery.1.9.1.min.js"> ...

  9. 006-循环结构(下)-C语言笔记

    006-循环结构(下)-C语言笔记 学习目标 1.[掌握]do-while循环结构 2.[掌握]for循环结构 3.[掌握]嵌套循环 一.do-while循环结构 do-while语法:   1 2 ...

随机推荐

  1. PhpStorm创建Drupal模块项目开发教程(5)

    Drupal项目开发中,问题跟踪器的设置,可以保证信息的交互.是开发中,不可或缺的部分. 接下来,就PhpStorm IDE中,问题跟踪器集成的配置操作就行图文解说. Settings | Tasks ...

  2. C++在struct与class差异

    在C++中,既能够用structkeyword进行类的定义,也能够用classkeyword进行类的定义,那么这两者究竟有什么差别呢? 唯一的一点差别是:struct和class的默认訪问权限不一样. ...

  3. 《Visual Studio Magazine》2013年读者选择奖—界面框架类

    好消息!2013 Visual Studio Magazine读者选择奖已经正式揭晓了!据了解,截至今年此奖项已经评选了21次,非常值得.NET开发人员信赖和参考.此次评选共有400多个产品角逐28个 ...

  4. kvm与qemu

    载请注明出处: http://www.openext.org/2014/04/kvmqemu/ http://blog.csdn.net/muge0913/article/details/245577 ...

  5. 安装SQL Server 2008 - 初学者系列 - 学习者系列文章

    本文介绍SQL Server 2008数据库的安装 1.从下列地址获取SQL Server 2008的副本 thunder://QUFlZDJrOi8vfGZpbGV8Y25fc3FsX3NlcnZl ...

  6. 学习html5的WebSocket连接

    1.什么是WebSocket WebSocket 是一种自然的全双工.双向.单套接字连接.使用WebSocket,你的HTTP 请求变成打开WebSocket 连接(WebSocket 或者WebSo ...

  7. 实例学习SSIS(三)--使用包配置

    原文:实例学习SSIS(三)--使用包配置 导读: 实例学习SSIS(一)--制作一个简单的ETL包 实例学习SSIS(二)--使用迭代 实例学习SSIS(三)--使用包配置 实例学习SSIS(四)- ...

  8. 【jar包】图片的异步加载--【 Imageloader】

    Android Imageloader图片异步加载 Imageloader是一个在android平台下简单的下载.显示.缓存空间的图片加载库. 异步下载网络图片并可以在UI线程更新View,使用二级缓 ...

  9. 藏地传奇js

    http://zd.163.com/m/zhenyan/ js很厉害,有很多值得学习的地方,记录下来. http://res.nie.netease.com/zdcq/qt/13/0625_zheny ...

  10. [转载]LVS快速搭建教程

    LVS配置教程 作者:oldjiang 一.前言 相信专程来读此文的读者对LVS必然有一定的了解,首先看图: 毋庸置疑,Load Balancer是负载调度器,由它将网络请求无缝隙调度到真实服务器,至 ...