2016-05-12 30 views
1

我對AngularJS頗爲陌生,在編寫我的代碼時,特別是我的Services.factory()變得越來越大。作爲一個例子,在一家工廠我有4個非常大的承諾..最後,我將它們全部捆綁到一個$ q.all([promise1(),promise2(),promise3(),promise4()])中。 (函數(響應)),它的工作原理都很乾淨......但是,隨着工廠的不斷增長,越來越難以管理每段代碼如何將大型Service Factory()分解成更小的代碼塊?

我正在尋找一種方法,可以讓我清理這個巨大的.factory()並允許我從外部文件加載代碼到工廠或打破.factory,但仍然可以使用$ q.all(...)讓他們一次處理...或一些其他的方法我沒有想到/意識到

這是爲了我自己的管理代碼的理智......以及通過簡單地評論一條線來激活或去激活特定的承諾不需要加載所有那些未被使用的代碼字節。

+1

能不能只顯示一小段代碼 –

回答

1

工廠可以在工廠注入。一家大型工廠可以重新分解成小型工廠。

app.factory("promiseService1", function() { 
    return function promise1() { 
     var promise1; 
     //code here 
     return promise1; 
    }; 
});  

app.factory("promiseService2", function() { 
    return function promise2() { 
     var promise2; 
     //code here 
     return promise2; 
    }; 
}); 

然後將這些工廠注入頂級工廠。

app.factory("megaService", function($q, promiseService1, promiseService2) { 
    return function megaPromise() { 
     var promise1 = promiseService1(); 
     var promise2 = promiseService2(); 
     return $q.all([promise1, promise2]); 
    } 
}); 

除了使大型工廠的代碼更具可管理性外,各工廠還可以單獨進行單元測試。

+0

謝謝,謝謝,謝謝。完全意義上的,不知道爲什麼我自己沒有想到這個。 – rolinger

+0

我假設我需要在應用程序定義中定義'sub'工廠。即:angular.module('starter',['ionic','starter.controllers','starter.services',starter.subfactory1','starter.subfactory2','starter.subfactory3'])???我需要定義:angular.module('starter.subfactory1',[]);在每個subfactoryX文件的頂部? – rolinger

+0

我的答案顯示,所有工廠都可以成爲一個模塊的一部分。模塊也可以重新分解爲模塊層次結構。重新分解模塊是另一天的另一個問題。 – georgeawg

相關問題