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中的語法