angularJs-3
来源:互联网 发布:韩国第一淘宝模特短发 编辑:程序博客网 时间:2024/04/29 08:22
--可组合使用过滤器
过滤器不仅可以在表达式中使用,也可以在js中使用是通过服务的方式实现的。
JS中使用过滤器
--$scope/$rootScope/$timeout
--$filter 这些都是通过服务注入的方式,进行修改的
自定义过滤器var m1 = angular.module('myapp',[]);
m1.filter('firstA',function(){
return function(str,arg){
if(arg){
return str.charAt(0).toUpperCase()+ str.substring(0,(arg-1) )
}else{
return str.charAt(0).toUpperCase()+ str.substring(1);
}
}
})
m1.controller('Aaa',['$scope','$filter',function($scope,$filter){
$scope.name = $filter('firstA')('information','2');
}])
angular.module
--controller/run
--filter 是模块下的一个方法,自定义过滤器
ng-repeat 指令,遍历一个数组
学过的指令有:
ng-app
ng-controller
ng-model
ng-click
ng-repeat='data in dataList'//{{data}}
var m1 = angular.module('myaap',[]);
m1.controller('aaa',['$scope',function($scope){
$scope.name = "anikin"
$scope.str = ["aaa","vvv","sas"];
}])
<ul ng-controller="aaa">
<li ng-repeat=" data in str">{{data}}</li>
</ul>
遍历集合
通过in的方式遍历每一项
实例
表格的操作
<script>
var m1 = angular.module('myaap',[]);
var arr= [ {name:"anikin",age:27,sex:"男"},{name:"jack",age:23,sex:"男"},{name:"rose",age:26,sex:"女"}];
m1.controller('aaa',['$scope','$filter',function($scope,$filter){
$scope.name = "anikin"
$scope.str = arr;
$scope.fnSort = function(arg)
{
$scope.str = $filter('orderBy')($scope.str,arg);
}
$scope.fnFailVal = function()
{
$scope.str = $filter('filter')(arr, $scope.fnFail);
}
}])
</script>
</head>
<body>
<div class="container" ng-controller="aaa">
<input type="search" ng-model="fnFail"/><input type="button" value="search" class="btn" ng-click="fnFailVal()" />
<table class="table table-bordered">
<tr>
<td ng-click=" fnSort('name')">name</td>
<td ng-click=" fnSort('age')">age</td>
<td ng-click=" fnSort('sex')">sex</td>
</tr>
<tr ng-repeat=" data in str">
<td >{{data.name}}</td>
<td >{{data.age}}</td>
<td >{{data.sex}}</td>
</tr>
</table>
ng-repeat的扩展功能:
ng-repeat 指令 只有合法的嵌套才行,非法嵌套会没作用
扩展部分
$index
$first:第一项为真,其余的返回假
$middle 中间全为真,收尾为假
$last 最后一行
$even
$odd 偶数行true
ng-repeat-start 实现兄弟节点之间的循环操作
ng-repeat-end
事件指令--支持表达式相比原声的<p ng-repeat="data in datas" class="{{ $odd ? 'red':'blue' }}">{{data}}</p>
<div ng-repeat-start="data in datas">div{{data}}</div>
<p >p{{data}}</p>
<div ng-repeat-end="data in datas">div{{data}}</div>
ng-click/dblclick双击
ng-mousedown/up
ng-mouseenter/leave
ng-mousemove/over/out
ng-keydown/up/press
ng-focus/blur
ng-submit
ng-selected
ng-change 配合ng-model
ng-copy
ng-cut
ng-paste
1; .ng-selected
<input type="checkbox" ng-model="aaa" >
<select>
<option>111</option>
<option ng-selected="aaa">222</option>
<option>333</option>
</select>2. ng-change
<input type="text" ng-change="bbb='Hello'" ng-model="bbb">{{bbb}}
3
<input type="text" value="dsasdsadasd" ng-copy="ccc='复制'" ng-paste="ccc='粘贴'" ng-cut="ccc='剪切'">{{ccc}}
ng-disabled 禁用状态指令 案例:倒计时 $interval $timeout
服务 $interval cancel(timer)清除定时器
var iNow = 5;
$scope.iT = true;
var timer = $interval(function(){
iNow --;
$scope.text = iNow+'秒钟';
if(iNow==0){
$scope.text = '可以点击了';
$scope.iT = false;
$interval.cancel(timer);
}
},1000);<input type="button" ng-value="text" ng-disabled="iT"/>
ng-readonly 也是禁用一些指令的。主要是针对表单等,显示效果和ng-disabled也有区别
ng-checked (选中状态)
ng-value 就不用{{ }} ,建议使用ng-value。对于用户体验很不好,angular没有完全加载完成的时候,页面会显示{{}},不利于用户体验
用户体验
和上面的ng-value一样,为了增加用户体验,ng-bind;
ng-bind 设置隐藏内容,增加用户体验,<div ng-bind="name"></div>
小问题:如果有多个表达式{{name}},{{name}}如何使用ng-bind写:ng-bind-template=“{{name}},{{name}}”
ng-cloak 控制css,当这个标签还没解析时候,display是none,解析完成的时候变成block。因此也可以控制{{}}的显示
ng-bind-template 如果是多个表达式,就可以使用这个指令 ng-bind-template="{{text}},{{text}}"
ng-bind-html 把其中内部的标签去执行,但是angularJs主要是在数据交互方面,因此这些不常用的东西做成插件的机制,提供给用户调用。也是插件,也是模块,在['A---']引用
ng-non-bindable 不去让表达式被解析,不常用。
样式都可以挂载到$scope下,也可以写在行内
ng-class 添加样式 里面是一种对象的写法
ng-style 通过指令的方式写行间样式
ng-href 凡是加ng的都是比较有利于用户体验的,因为没有加载完成的时候是看不到东西。不加效果一样
ng-src
ng-attr-(suffix) //提供一种通用的方式,有些是没有提供样式。其他的都可以
ng-attr-href
ng-attr-str
<style type="text/css">
.red{ background: red;}
.blue{ background: blue;}
.white{ color:#fff;}
</style><p ng-bind="name" ng-class="{red:true}"></p>
<p ng-bind-template="{{name}},{{name}}" ng-style="{color:'red'}"></p>
<p ng-bind-html="text" ng-class="{{oclass}}"></p>
<p ng-cloak ng-style="{{ostyle}}">{{name}}</p> <!--没有加载完的时候是display:none-->
<a ng-href="http://www.baidu.com/" ng-bind="name" ng-attr-title="{{name}}"></a>
DOM
ng-show 显示 针对的display (true/false)
ng-hide 隐藏
ng-if 和show的不同点是,直接对dom节点进行删除添加操作
ng-swtich 选择性的隐藏切换
on 绑定的数据变量名
default ng-switch-default 首先显示默认的效果 on的初始值会显示这个
when 切换的效果 ng-swicth-when="false"; 绑定值切换后就显示这个
ng-open <details ng-open="true"> html5中open一样
<input type="checkbox" ng-model="bbb" >
<div ng-bind="name" ng-show="bbb"></div>
<div ng-bind="age" ng-hide="bbb"></div>
<div ng-bind="nation" ng-if="bbb"></div>
<input type="checkbox" ng-model="ccc">
<div ng-switch on="ccc">
<div ng-bind="name" ng-switch-default></div>
<div ng-switch-when="false" ng-bind="age"></div>
</div><details ng-open="ccc">
<summary>Copyright 2011.</summary>
<p>pc上面只在谷歌跟saria上面实现了这个效果</p>
</details>
ng-init 初始化数据 eg: ng-init=" text=hello" $scope.name='hello'的方式比较清晰
ng-model 扩展:比如不想实时的更新 控制双向数据绑定的控制
ng-model-options eg:ng-model-options="{updateOn: 'blur'}" 光标离开事件updateOn
ng-controller 控制器。扩展 当controller开发比较复杂的项目的时候,支持面向对象的写法:
as创建一个对象出来 ng-controller="fn as a1"
ng支持面向对象的写法:<div ng-repeat="outerD in datas" ng-init="outerIndex=$index">
<p ng-repeat="innerD in outerD" ng-init="innerIndex=$index">
<span>{{innerD}}--{{outerIndex}}{{innerIndex}}</span>
</p>
</div>
<div ng-include=" 'include.html' "></div>//睁开你的狗眼看仔细了,这里可是双引号里面还加了单引号的
var m1 = angular.module('myapp1',[]);
m1.controller('Aaa',['$scope',Person]);
function Person($scope){ }; // 构造函数 面向对象的写法
Person.prototype.showName = function(){
return 'angularjs';
};
Person.prototype.text = 'anikin';
<div ng-controller="Person as p1 " >
{{ p1.showName() }},{{p1.text}}
</div>
- angularJs-3
- AngularJS学习笔记(3)- AngularJS 指令
- angularjs 教程3
- AngularJs(Part 3)
- angularjs[1.4.3]
- AngularJS 源码分析3
- AngularJS 入门3
- angularJs基础(3)
- angularJs-工具方法3
- AngularJS-3-数据绑定
- **AngularJs学习笔记3**
- AngularJS
- angularjs
- Angularjs
- angularJS
- AngularJS
- AngularJS
- AngularJS
- Android之旅
- git 删除远程已经推送过的文件或者文件夹
- js插件汇总
- angularJs(1)
- git and github学习以及入门
- angularJs-3
- 在android上使用easyPR+caffe进行车牌检测与识别
- php(4)
- php(5)--数组和oop
- [BZOJ1030][JSOI2007]文本生成器(AC自动机+dp)
- query api学习系列之2
- php(6)-面向对象-三大特点
- 坦克大战(单机版)
- php(8)面向对象