? ? ? ? ? ? 上一章,我們理解了angular框架的各種指令,控制器,各種服務模塊的調用。這個是 ? ? ?angular框架的運行模式,通過c層來實現modle和v層的數據交互,來動態的實現頁面的動態效果。通過控制器的作用,來創建不同的作用域。通過,不同的作用域來進行不同的數據處理的。這樣angular框架就是把頁面的架構分成不同的控制器,我們可以在控制器的引入不同的模塊和服務,來進行不同的服務引入。進行不同的操作。依賴注入在解決web需要的不同的功能上,比如說,購物車的計算總價的時候,我們可以用工廠的模式來進行封裝不同的工具和方法,在我們需要使用的時候,可以直接調起方法,注入模塊到需要的控制器中,就可以來使用我們的依賴注入的工廠模式所封裝的方法。如果,需要在不同的控制器傳值的或者是說傳遞數據的話,我們可以通過service服務來進行數據之間的轉換,來進行不同頁面的數據的轉換。也是依賴注入的一種模式。在網站上,我們是經常用到的service服務的。這些都是依賴注入的功能,在數據的轉換和數據的傳值的,我們可以通過service服務上數據對象來進行數據的交互,在service服務上,我們可以封裝一下方法,比如點擊的數據的增加,點擊按鈕數據的減少等的方法,來進行數據的交互和轉化。這些方法都在service服務里進行封裝好,我們可以通過數組來進行存儲數據,通過封裝點擊方法來進行把數據push到數組里面,然后,在注入service服務控制器的作用域中,我們就可以通過service的對象所封裝的方法拿到我們需要的數據了。因為service服務的回調函數是一個構造函數,在構造函數的里面的所創建的是對象,可以用this來進行代表構造函數的所創建的對象。在點擊事件里面,我們可以用this指針來進行指向點擊的數據對象,這樣,我們可以拿到我們所需要的數據對象,這樣,我們可以就通過自定義指令來進行渲染到文檔流中。封裝好service服務,引進我們的主頁里面。就可以注入我們所需要的模塊當中,然后,我們在所需要的頁面中,添加點擊事件。里面,可以進行傳進我們所需要的參數是我們用ajax請求下來的數據,所遍歷的對象。這樣,我們可以通過添加點擊事件的時候,可以把所點擊的對象this.item 存儲在服務模塊中,我們可以在購物車中,通過封裝好的數組push方法的所在的函數來進行拿到我們所點擊的對象數據。點擊幾個,我們所在的數組的數據就會有保存所點擊的對象數據,我們就可以通過循環遍歷里面的數組中的數據,來進行渲染,因為,每一條數據都包含在對象里面,我們可以通過自定義指令來進行對象的渲染,就是我們在購物車中的所添加的數據了。這個是我們所需要的方法和功能,因為,我們在service中,我們所需要的方法可以封裝和注入。
依賴注入可以通過以下幾個方法:
service: 數據的交互和注入,保證數據的持久化,和不同頁面的引進共享數據。
一般的代碼寫法如下:參數第一是:我們模塊的名稱。第二個參數是一個回調函數(注意:是個構造函數,所創建的是單例對象,我們可以用this指針來進行指向我們的單例對象,也是我們所需要的數據的載體的數據的對象。),里面可以封裝我們所需要的方法和數據。
? ?.service('service', function () {
? ? ? ? ? ? var arr = [];
? ? ? ? ? ?this.name = 'Operation Data';
? ? ? ? ? this.addItem = function (item) {
? ? ? ? ? ? ?arr.push(item)
? ? ? ?};
})
factory: 工廠方法。工廠方法是我們的設計模式比較好的設計思想。在我們學習面向對象的時候,我們就可以通過工廠方法來創建我們的所需要的對象。可以大批量創建我們的所需要的對象模板。在angular框架中,我們用factory工廠方法來進行封裝我們的所需要的工具和方法。來進模塊的依賴注入。我們可以單獨建個模塊的來封裝我們的所需要的工具和方法,來進行再在需要的地方進行模塊注入。實現方法工具的共享。這個是工廠方法的用法。在工廠方法里面進行返回的也是個對象。外部可以調來獲取使用。寫法如下:
app.factory('logFactory',function(){
? ? ?return {?
? ? ? ? ? ? ? ? ? ? min: function (a,b) {
? ? ? ? ? ? ? ? ? ? ? ? ? ? ?return a>b? a:b;
? ? ? ? ? ? ? ? ? ? ? ?} ,
? ? ? ? ? ? ? ? ? ? max:function (a,b){
? ? ? ? ? ? ? ? ? ? ? ? ? ?return a>b?b:a;
? ? ? ? ? ? ? ? ?}
? ? ? }
})
? ? ? ? 在這里,我們就可以用工廠的方法來進行定義了兩個方法,是比較大小的方法,在需要比較大小的方法所需要的模塊我們可以依賴注入調用工廠的方法進行比較大小。在原生js中,我們需要的是通過封裝函數來進行調用,就可以了。在angular框架中,我們需要把公共的方法封裝在工廠的模式中,就可以了。通過模塊的注入來進行調用。這個是與原生的js中,所不同的方法。在這里的是,工廠的方法和service服務的就是我們來進行數據的傳送。
? ? ? ? ? 上面,我們了解了我們的項目是通過模塊化來進行管理我們的頁面的,通過依賴注入的方式來進行方法的調用,和數據的傳送,這是angular的最大的特點,我們把計算價錢的方法,和計算數量的方法來進行封裝到工廠方法里。也就是說,我們要在工廠里進行封裝我們所需要的方法,通過模塊注入的形式來進行方法的傳遞,當然,也可以通過事件的觸發來進行調用我們的注入的方法,也就是我們定義的事件觸發來進行我們的注入的方法,這是不同的控制器的傳遞方法的一種形式。所以,我們要把共同方法來進行封裝在工廠里面,實現方法共享。在封裝方法,我們可以充分利用對象,數組,函數來進行方法的封裝,通過函數的傳參,形參,實參是我們的經常利用函數的方法,定義傳入不同的參數來進行不同的方法計算方法,比如,在購物車中,我們經常用,定義求點擊數量相加的方法,這個數量是通過service服務上