1. AngularJS的module函數有兩種用法,
a. 定義一個module, 須要傳入2個參數,module('moduleName', []), 第一個參數是新的module名稱,第二個參數是新module所依賴的module數組。
b. 載入一個module, 只須要1個參數,module('moduleName'), 惟一的一個參數指定要載入的module名稱。
2. 使用controller函數來定義一個控制器(controller), 用ng-controller將控制器綁定到具體的HTML組件上。定義控制器的controller函數也須要2個參數,第一個是控制器名稱,第二個參數一樣也是一個數組,數組的最後一個元素就是controller自己的函數,前面的元素用字符串的形式指定其須要的依賴項。若是沒有依賴項,那就只須要定義函數。好比:
angular.module('app1', [])
.controller('mainControl', [function() {
console.log('controller created.');
}]);
3. 在controller函數中用var定義的局部變量,在HTML中是不可見的。
4. 推薦在controller函數中儘可能避免直接引用this, 比較好的作法是使用代理。緣由是一個函數中的this關鍵詞在被外部調用的時候,是會被覆蓋掉的。這樣的話,在函數內部和外部的this會是徹底不一樣兩個對象。
代理用法示例:
angular.module('app1', [])
.controller('mainControl', [function() {
var self = this;
self.message = 'Hello world';
self.changeMessage = function() {
self.message = 'Goodbye.';
};
}]);
5. ng-bind與雙大括號的區別, ng-bind和{{}}能夠說基本上是能夠互相替換的,可是也有區別。區別在於:AngularJS在啓動的時候就會執行ng-bind, 而{{}}的替換時間會稍晚一些。有可能發現頁面在加載的時候,雙括號被一閃而過地替換掉(只在頁面初次加載的時候發生)。可是ng-bind就沒有這個問題。 6. ng-cloak能夠用於解決雙括號閃現的問題。