2016-08-03 95 views
0

我一直在努力角JS,我發現有很多方法可以創建一個模塊,控制器等..不同的方式使用角度JS

例如:

var app = angular.module('myApp', []); 

和:

angular.module('myApp', []); 

如果我想創建一個控制器(第一種方式):

app.controller('myController', [...]); 

創建一個控制器(方式二):

angular.module('myApp').controller('myController', [...]); 

真的......有什麼區別?

謝謝!

+0

比第一種方式更清潔和更簡潔嗎? –

+2

兩個第一段代碼之間的區別在於,您在第一段代碼中設置了一個變量來存儲結果。其餘的只是鏈接。 – melancia

+0

他們之間沒有區別。但對於我來說,我認爲你應該使用'第二種方式',你不必考慮應用程序變量,你可以通過'angular.module('myApp')'來獲取應用程序模塊。 –

回答

0

angular.module(「對myApp」,[])時爲返回一個模塊的setter實例一旦創建。將var app =放在前面只保留對模塊JavaScript對象的引用。模塊名稱後面的空數組是依賴列表。我們通過一個空的依賴列表來區分它與getter調用,並讓Angular知道它是一個setter調用,並且我們正在創建一個模塊。

angular.module('myApp')是模塊的getter並返回JavaScript對象。這裏的區別是沒有依賴列表,所以Angular知道它正在檢索已經創建的模塊。

如果你在同一個文件中,可以用類似app的局部變量保持對模塊的引用,但是當你在不同的文件中創建控制器時,你不應該依賴全局變量調用app的存在,應該用getter調用檢索模塊。

0

實際上沒有什麼區別,完全一樣。

這app.controller(...)等於angular.module( '對myApp')。控制器(...)

,因爲你聲明的變量名爲app等於angular.module( )

而鏈接的事情:angular.module.controller是你們所有3個例子的組合。

把angular.module()到一個名爲app或任何變量只是使語法更容易這一切^^