最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

angular 動態(tài)組件類型詳解(四種組件類型)

 更新時間:2017年02月22日 08:52:40   作者:miaowwwww  
這篇文章給大家講解四種組件類型,非常不錯,具有參考借鑒價值,對angular 動態(tài)組件類型感興趣的朋友參考下吧

組件類型1:純函數(shù)功能,而沒有視圖部分,即Factory(類似于$http)

promise.component.html

常見的有內(nèi)置的$http,$q之類的。一般使用promise與作用域進行交互

組件類型2:不是常駐于視圖,而是動態(tài)插入的、有UI的一類組件,有輸入交互、不常被調(diào)用(類似于Model對話框)

factory.component.html

并發(fā)性。這里收到es6的啟發(fā)。在factory內(nèi)使用了構(gòu)造函數(shù),來區(qū)分不同的實例。當(dāng)然,factory接口返回的類型要根據(jù)需求來定:僅僅是一個promise?還是返回一整個組件的實例

數(shù)據(jù)驅(qū)動。factory內(nèi)部我使用了this.scope = $rootScope.$new()。并把每個實例的模板和作用域進行綁定$compile(html())(scope)。感謝毛總,這招真是方便。我們能夠真正使用到angular的精髓:用數(shù)據(jù)來驅(qū)動我們的視圖了

交互。該demo因為需要與用戶進行交互,因此返回了一個promise給調(diào)用者。當(dāng)然實際要看情況。

作用域。由于該組件并不常常需要被調(diào)用,因此一旦組件'close'(從視圖上消失),就scope.$destroy()、instance.remove()

組件類型3:不常駐于視圖,但會被經(jīng)常調(diào)用,而且是動態(tài)插入的、無輸入交互、有UI的一類組件(類似于popover)

factory.component2.html

對比。與上類型組件對比,該類組件更容易被調(diào)用(類似于微信右上角的popover)
并發(fā)性。要求更高,稍復(fù)雜。因此返回組件的實例,讓開發(fā)者可用調(diào)用組件內(nèi)部的方法(open/close/...)。同時,鑒于需求特殊性,在open()方法處我傳入了$event作為UI參數(shù)

作用域。由于是隱藏地常駐與視圖,因此只當(dāng)路由切換時才注銷實例。scope.$watch('$stateChangeSuccess', function(){scope.destroy()})

組件實例。賦值給作用域的變量 $scope.instance = Mypop.init()

組件類型4:實例之間存在某種關(guān)系、不常駐于視圖,動態(tài)插入、只有視覺交互、有UI的一類組件(類似于ant design的Notification)

factory.component.3.html

對比。與上類組件對比,組件的每個實例之間需要存在某種隊列關(guān)系,具體操作方法請參考上面的例子。

實例關(guān)系。如何維護實例之間的關(guān)系?筆者比較笨的方法是開啟另一個factory實例,存放一個實例數(shù)據(jù),來維護實例之間的關(guān)系var _sl = scope.list = []。然后該factory具備操作實例隊列的一些方法 _sl.push(token)或者 _sl.shift()。同時每個實例都會監(jiān)聽這個實例隊列 _s.$watchCollection('instanceList', function(){...})

相關(guān)文章

最新評論

黄石市| 大理市| 新丰县| 科技| 大名县| 社会| 翼城县| 繁峙县| 喀喇| 闽侯县| 高邮市| 三河市| 健康| 武隆县| 津市市| 彭州市| 仪征市| 彭水| 云林县| 达尔| 西昌市| 河南省| 宁阳县| 五大连池市| 阜新| 高唐县| 灌南县| 福贡县| 清水河县| 阿合奇县| 东阿县| 平塘县| 尚义县| 含山县| 日土县| 应城市| 塔河县| 宜良县| 青龙| 方正县| 日照市|