angular 動態(tài)組件類型詳解(四種組件類型)
組件類型1:純函數(shù)功能,而沒有視圖部分,即Factory(類似于$http)
promise.component.html
常見的有內(nèi)置的$http,$q之類的。一般使用promise與作用域進(jìn)行交互
組件類型2:不是常駐于視圖,而是動態(tài)插入的、有UI的一類組件,有輸入交互、不常被調(diào)用(類似于Model對話框)
factory.component.html
并發(fā)性。這里收到es6的啟發(fā)。在factory內(nèi)使用了構(gòu)造函數(shù),來區(qū)分不同的實(shí)例。當(dāng)然,factory接口返回的類型要根據(jù)需求來定:僅僅是一個promise?還是返回一整個組件的實(shí)例
數(shù)據(jù)驅(qū)動。factory內(nèi)部我使用了this.scope = $rootScope.$new()。并把每個實(shí)例的模板和作用域進(jìn)行綁定$compile(html())(scope)。感謝毛總,這招真是方便。我們能夠真正使用到angular的精髓:用數(shù)據(jù)來驅(qū)動我們的視圖了
交互。該demo因?yàn)樾枰c用戶進(jìn)行交互,因此返回了一個promise給調(diào)用者。當(dāng)然實(shí)際要看情況。
作用域。由于該組件并不常常需要被調(diào)用,因此一旦組件'close'(從視圖上消失),就scope.$destroy()、instance.remove()
組件類型3:不常駐于視圖,但會被經(jīng)常調(diào)用,而且是動態(tài)插入的、無輸入交互、有UI的一類組件(類似于popover)
factory.component2.html
對比。與上類型組件對比,該類組件更容易被調(diào)用(類似于微信右上角的popover)
并發(fā)性。要求更高,稍復(fù)雜。因此返回組件的實(shí)例,讓開發(fā)者可用調(diào)用組件內(nèi)部的方法(open/close/...)。同時,鑒于需求特殊性,在open()方法處我傳入了$event作為UI參數(shù)
作用域。由于是隱藏地常駐與視圖,因此只當(dāng)路由切換時才注銷實(shí)例。scope.$watch('$stateChangeSuccess', function(){scope.destroy()})
組件實(shí)例。賦值給作用域的變量 $scope.instance = Mypop.init()
組件類型4:實(shí)例之間存在某種關(guān)系、不常駐于視圖,動態(tài)插入、只有視覺交互、有UI的一類組件(類似于ant design的Notification)
factory.component.3.html
對比。與上類組件對比,組件的每個實(shí)例之間需要存在某種隊(duì)列關(guān)系,具體操作方法請參考上面的例子。
實(shí)例關(guān)系。如何維護(hù)實(shí)例之間的關(guān)系?筆者比較笨的方法是開啟另一個factory實(shí)例,存放一個實(shí)例數(shù)據(jù),來維護(hù)實(shí)例之間的關(guān)系var _sl = scope.list = []。然后該factory具備操作實(shí)例隊(duì)列的一些方法 _sl.push(token)或者 _sl.shift()。同時每個實(shí)例都會監(jiān)聽這個實(shí)例隊(duì)列 _s.$watchCollection('instanceList', function(){...})
相關(guān)文章
AngularJS ng-bind 指令簡單實(shí)現(xiàn)
本文主要介紹AngularJS ng-bind 指令,在這里對ng-bind 指令做了詳細(xì)資料整理并講解,提供了實(shí)例代碼以便大家參考,有需要的小伙伴可以參考下2016-07-07
angular2組件中定時刷新并清除定時器的實(shí)例講解
今天小編就為大家分享一篇angular2組件中定時刷新并清除定時器的實(shí)例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08
angular強(qiáng)制更新ui視圖的實(shí)現(xiàn)方法
這篇文章主要介紹了angular強(qiáng)制更新ui視圖的實(shí)現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
AngularJS基礎(chǔ) ng-selected 指令簡單示例
本文主要介紹AngularJS ng-selected 指令,這里對ng-selected 指令的基礎(chǔ)資料做了詳細(xì)介紹,并附有示例代碼,有需要的小伙伴可以參考下2016-08-08
詳解angular2.x創(chuàng)建項(xiàng)目入門指令
這篇文章主要介紹了詳解angular2.x創(chuàng)建項(xiàng)目入門指令,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10
es6+angular1.X+webpack 實(shí)現(xiàn)按路由功能打包項(xiàng)目的示例
本篇文章主要介紹了es6+angular1.X+webpack 實(shí)現(xiàn)按路由功能打包項(xiàng)目的示例,具有一定的參考價值,有需要的可以了解一下2017-08-08
Angularjs 根據(jù)一個select的值去設(shè)置另一個select的值方法
今天小編就為大家分享一篇Angularjs 根據(jù)一個select的值去設(shè)置另一個select的值方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-08-08

