組件類型1:純函數功能,而沒有視圖部分,即Factory(類似于$http)
創(chuàng)新互聯(lián)專注于龍華網站建設服務及定制,我們擁有豐富的企業(yè)做網站經驗。 熱誠為您提供龍華營銷型網站建設,龍華網站制作、龍華網頁設計、龍華網站官網定制、微信小程序定制開發(fā)服務,打造龍華網絡公司原創(chuàng)品牌,更為您提供龍華網站排名全網營銷落地服務。promise.component.html
常見的有內置的$http,$q之類的。一般使用promise與作用域進行交互
組件類型2:不是常駐于視圖,而是動態(tài)插入的、有UI的一類組件,有輸入交互、不常被調用(類似于Model對話框)
factory.component.html
并發(fā)性。這里收到es6的啟發(fā)。在factory內使用了構造函數,來區(qū)分不同的實例。當然,factory接口返回的類型要根據需求來定:僅僅是一個promise?還是返回一整個組件的實例
數據驅動。factory內部我使用了this.scope = $rootScope.$new()。并把每個實例的模板和作用域進行綁定$compile(html())(scope)。感謝毛總,這招真是方便。我們能夠真正使用到angular的精髓:用數據來驅動我們的視圖了
交互。該demo因為需要與用戶進行交互,因此返回了一個promise給調用者。當然實際要看情況。
作用域。由于該組件并不常常需要被調用,因此一旦組件'close'(從視圖上消失),就scope.$destroy()、instance.remove()
組件類型3:不常駐于視圖,但會被經常調用,而且是動態(tài)插入的、無輸入交互、有UI的一類組件(類似于popover)
factory.component2.html
對比。與上類型組件對比,該類組件更容易被調用(類似于微信右上角的popover)
并發(fā)性。要求更高,稍復雜。因此返回組件的實例,讓開發(fā)者可用調用組件內部的方法(open/close/...)。同時,鑒于需求特殊性,在open()方法處我傳入了$event作為UI參數
作用域。由于是隱藏地常駐與視圖,因此只當路由切換時才注銷實例。scope.$watch('$stateChangeSuccess', function(){scope.destroy()})
組件實例。賦值給作用域的變量 $scope.instance = Mypop.init()
組件類型4:實例之間存在某種關系、不常駐于視圖,動態(tài)插入、只有視覺交互、有UI的一類組件(類似于ant design的Notification)
factory.component.3.html
對比。與上類組件對比,組件的每個實例之間需要存在某種隊列關系,具體操作方法請參考上面的例子。
實例關系。如何維護實例之間的關系?筆者比較笨的方法是開啟另一個factory實例,存放一個實例數據,來維護實例之間的關系var _sl = scope.list = []。然后該factory具備操作實例隊列的一些方法 _sl.push(token)或者 _sl.shift()。同時每個實例都會監(jiān)聽這個實例隊列 _s.$watchCollection('instanceList', function(){...})
另外有需要云服務器可以了解下創(chuàng)新互聯(lián)建站www.cdcxhl.com,海內外云服務器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務器、裸金屬服務器、高防服務器、香港服務器、美國服務器、虛擬主機、免備案服務器”等云主機租用服務以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務可用性高、性價比高”等特點與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應用場景需求。