一、 指令
<div ng-app="app"></div>
<script>
var app = angular.module('app', []);
</script>
<div ng-controller="appController"></div>
<script type="text/javascript">
app.controller('appController', function($scope) { })
</script>
ng-repeat="key in keys"
ng-repeat="(key, value) in keys"
ng-repeat="key in keys | filter:searchText"
ng-repeat="key in keys | orderBy:'-age'"
ng-options="color.name for color in colors"
ng-options="option.id as option.name for option in Options"
ng-options="option.id group by option.name for option in Options"
ng-class="{'true':'badge bg-green', 'false':'badge bg-red'}[isActive]"
ng-style="{ color: i.color=='' || i.color=='Default' ? 'default' : 'red' }"
<input type="text" ng-model="userName">
<div><span ng-bind="name"></span></div><!-- 或双大括号 -->
<div ng-if="isChecked == true">为true则可显示</div>
<p ng-hide="true">我是不可见的</p>
<p ng-show="2+2 == 4">我是可见的</div>
<span ng-switch="person.sex">
<span ng-switch-when="boy">boy</span>
<span ng-switch-when="girl">girl</span>
<span ng-switch-default></span>
<div ng-init="name='张三'"></div>
<select>
<option>First</option>
<option>Second</option>
<option ng-selected="true">Third</option>
</select>
<select>
<option ng-repeat="person in persons" ng-select="person.sex == 'boy'"></option>
</select>
<button ng-disabled="1+1==2">不可点击</button>
<input type="text" ng-readonly="isReadOnly"/>
<input type="checkbox" ng-checked="true" />
<a ng-href="'/user/1'">Link</a>
<img ng-src="">
ng-form
和HTML的<form>标签一样,但可以被<form>标签嵌套
<div ng-include="'userList.html'"></div>
二、事件
ng-click
ng-dbl-click
ng-mousedown
ng-mouseenter
ng-mouseleave
ng-mousemove
ng-keydown="keydown($event)"
ng-keyup="keyup($event)"
ng-keypress="keypress($event)"
事件发生顺序:KeyDown -> KeyPress -> KeyUp
ng-change
ng-blur
ng-focus
三、自定义拓展
var app = angular.module('myApp', []);
app.service('serverDemo', function() {
this.add = function (x,y) {
return x+y;
},
return sub=function(x,y){
return x-y;
}
});
app.filter('filterDemo',['serverDemo', function(serverDemo) {
//在过滤器中使用服务
return function(x,y) {
return serverDemo.add(x,y);
};
}]);
app.directive('dirDemo', function() {
return {
restrict: 'EA', // 指令是一个元素或属性
replace: true, // 使用模板替换原始标记
transclude: true, // 不复制原始HTML内容
require: '^?accordion',
scope: {
str: '=strDemo' //双向绑定
name: "@", // 单向绑定
save: "&" // 方法绑定
},
template: '<div> \{\{str\}\}</div>',//替换HTML (使用scope中的变量)
controller: [ "$scope", function (scope) {}],
link: function(scope, element, attrs, controller) {
}
}
});
app.controller('controllerDemo', function($scope,$filter) {
//在控制器中使用过滤器
scope.bizScope = filter('filterDemo')(10, 20);
});
指令及过滤器使用
<div ng-app="myApp">
<h1>\{\{10 | filterDemo:20\}\}</h1>
<dir-demo str-demo="'abc'" name='name'></dir-demo>
</div>