angular.element
jqLite
(轻量级jQuery)// 获取 jqLite 对象 var $ = angular.element; $(document).ready(function() { });
angular.module('模块名', [])
ng-app="模块名"
,告诉NG管理指定的页面部分模块名.controller('控制器名', function() {})
ng-controller="控制器名"
,指定管理内容的控制器$scope
中,即:暴露数据和行为给视图ng-model
或者 {{}}
拿到并绑定数据angular .module('testApp', []) .controller('DemoController', function($scope) { });
// 第一个参数:控制器的名称 // 第二个参数:数组,最后一项表示回调函数,除此以外其余的参数表示依赖的参数列表 app.controller("DemoController", ["$scope", "$log", function($scope, $log) { $log.log("打印日志了"); }]);
this
添加数据$scope.age
添加数据DemoController as demo
<div ng-app="testApp" ng-controller="DemoController as demo"> <p>{{demo.name}}</p> </div> <script> angular.module('testApp', []) .controller('DemoController', ['$scope', function($scope) { // 添加模型属性 this.name = 'Jack'; }]); </script>
/** * [提取参数] * @param {Function} fn [回调函数] * @return {[type]} [参数列表数组] */ function extractArgs(fn) { var r = /^[^\(]*\(\s*([^\)]*)\)/; var args = r.exec( fn.toString() ); return args[1].split(','); } extractArgs(function($scope, $log) {}); // 方法的返回值:["$scope", "$log"]
ng-bind
指令ng-cloak
指令textContent
,功能相似于:{{}}
ng-bind
指令没法输出 html 内容(即:实现innerHTML的功能)<p ng-bind="name"></p>
<style> .ng-cloak { display: none; } </style> <p class="ng-clock">{{name}}</p>
ng-bind-html="<div></div>"
npm install angular-sanitize
<div ng-bind-html="name"></div> <script src="angular-sanitize.js"></script> <script> // 引入 ngSanitize 模块 var app = angular.module("testApp", ["ngSanitize"]); app.controller("testController", ["$scope", function($scope) { $scope.name = "<h1>雨啊雨</h1>"; }]); </script>
<ul> <li ng-repeat="item in datas"></li> </ul> <script> app.controller('TestController', ['$scope', function($scope) { $scope.datas = [ {name: 'jack', age: 19}, {name: 'tom', age: 21}, {name: 'rose', age: 22} ]; }]); </script>
track by $index
解决,数据重复的问题<ul> <li ng-repeat="item in datas track by $index"></li> </ul>
$odd
/$even
,用来表示当前项的奇偶性,类型为:布尔值$first
/$last
/$middle
,用来表示当前项的位置,类型为:布尔值$index
,用来表示当前项的索引号,从0开始计算<ul> <!-- 隔行变色效果的实现 --> <li ng-repeat="item in datas" class="{{$odd?'red':'green'}}"></li> </ul>
ng-class="expression"
,expression是model中的一个数据或表达式ng-class="{red: $odd, green: $even}"
ng-class
经过指定一个对象(对象字面量),键为:类名,值为:布尔值ng-class="type"
<div ng-class="type"></div> <script> app.controller("demoController", ["$scope", function($scope) { $scope.type = "red"; }]); </script>
ng-show="布尔值"
<div ng-show="isShow"></div>
ng-if="布尔值"
<div ng-hide="false"></div>
ng-switch-when
来使用<div ng-switch="name"> <div ng-switch-when="jack">我是jack</div> <div ng-switch-when="tom">我是tom</div> <div ng-switch-when="rose">我是rose</div> </div> <script> $scope.name = "jack"; </script>
ng-checked
: 复选框是否选中ng-selected
: 下拉框是否选中ng-disabled
: 是否禁用ng-readonly
: 是否只读html
特色:都是单向数据绑定,只能实现从数据到视图的绑定angularjs
ng-checked / ng-selected 能够使用 ng-model 代替, 可是要注意ng-model是双向绑定
ng-click / ng-submit / ng-dblclick / ng-blur / ng-focus / ng-change
data-
做为属性的开头, angluar中的全部指令彻底支持HTML5中的语法