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

Angular ng-repeat遍歷渲染完頁(yè)面后執(zhí)行其他操作詳細(xì)介紹

 更新時(shí)間:2016年12月13日 11:12:31   投稿:lqh  
這篇文章主要介紹了Angular ng-repeat遍歷渲染完頁(yè)面后執(zhí)行其他操作詳細(xì)介紹的相關(guān)資料,需要的朋友可以參考下

Angular ng-repeat遍歷渲染

業(yè)務(wù)中有時(shí)需要在異步獲取數(shù)據(jù)并用ng-repeat遍歷渲染完頁(yè)面后執(zhí)行某個(gè)操作,angular本身并沒(méi)有提供監(jiān)聽(tīng)ng-repeat渲染完成的指令,所以需要自己動(dòng)手寫(xiě)。有經(jīng)驗(yàn)的同學(xué)都應(yīng)該知道,在ng-repeat模板實(shí)例內(nèi)部會(huì)暴露出一些特殊屬性$index/$first/$middle/$last/$odd/$even,$index會(huì)隨著每次遍歷(從0開(kāi)始)遞增,當(dāng)遍歷到最后一個(gè)時(shí),$last的值為true,so,通過(guò)判斷$last的值來(lái)監(jiān)聽(tīng)ng-repeat的執(zhí)行狀態(tài),怎么在遍歷過(guò)程中拿到$last的值:自定義指令

小實(shí)例,我只寫(xiě)了最重要的部分

//要循環(huán)的數(shù)據(jù)
$scope.data = [
  {
    str: 'a'
  },
  {
    str: 'b'
  },
  {
    str: 'c'
  }
]
//自定義指令repeatFinish
app.directive('repeatFinish',function(){
  return {
    link: function(scope,element,attr){
      console.log(scope.$index)
      if(scope.$last == true){
        console.log('ng-repeat執(zhí)行完畢')
      }
    }
  }
})
<div id="box">
  <span ng-repeat="item in data" repeat-finish>{{item.str}}</span>
</div>

打開(kāi)控制臺(tái),會(huì)打印出0,1,2,當(dāng)$index = 2點(diǎn)時(shí)候,$last值為true,ng-repeat渲染完畢

so easy!

當(dāng)然指令最好是能夠復(fù)用,在這個(gè)指令內(nèi)寫(xiě)具體的業(yè)務(wù)邏輯不利于復(fù)用,可以通過(guò)給指令指定一個(gè)處理函數(shù)renderFinish

<div id="box">
  <span ng-repeat="item in data" repeat-finish="renderFinish()">{{item.str}}</span>
</div>

再通過(guò)指令的attr參數(shù)獲取這個(gè)處理函數(shù)

app.directive('repeatFinish',function(){
  return {
    link: function(scope,element,attr){
      console.log(scope.$index)
      if(scope.$last == true){
        console.log('ng-repeat執(zhí)行完畢')
        scope.$eval( attr.repeatFinish )
      }
    }
  }
})
//controller里對(duì)應(yīng)的處理函數(shù)
$scope.renderFinish = function(){
  console.log('渲染完之后的操作')
}

attr獲取到的屬性只是一個(gè)字符串表達(dá)式,$scope.$eval方法是專門(mén)執(zhí)行AngularJS表達(dá)式的,通過(guò)它處理函數(shù)得以執(zhí)行,這樣,指令用在不同的地方,可傳遞不同的處理函數(shù)。

有些業(yè)務(wù)比較復(fù)雜,可能ng-repeat渲染完成之后,需要執(zhí)行多個(gè)操作并且這多個(gè)操作有多個(gè)前端完成,需要用到angular的事件,在repeatFinish指令的link函數(shù)內(nèi)觸發(fā)一個(gè)事件,各位前端同學(xué)監(jiān)聽(tīng)該事件完成各自的操作

app.directive('repeatFinish',function(){
  return {
    link: function(scope,element,attr){
      console.log(scope.$index)
      if(scope.$last == true){
        console.log('ng-repeat執(zhí)行完畢')
        //向父控制器傳遞事件
        scope.$emit('to-parent');
        //向子控制器傳遞事件
        scope.$broadcast('to-child');
      }
    }
  }
})
//父控制器中監(jiān)聽(tīng)事件
$scope.$on('to-parent',function(){
  //父控制器執(zhí)行操作
})

//子控制器中監(jiān)聽(tīng)事件
$scope.$on('to-child',function(){
  //子控制器執(zhí)行操作
})

如何在當(dāng)前控制器下監(jiān)聽(tīng)到該事件呢?angular沒(méi)有向當(dāng)前控制器傳遞事件的方法,可以先向父(子)控制器傳遞事件,父(子)控制器監(jiān)聽(tīng)到事件后反過(guò)來(lái)向子(父)控制器傳遞事件。

一句話總結(jié):指令是angular的核心功能之一,用好了事半功倍,監(jiān)聽(tīng)ng-repeat執(zhí)行狀態(tài)僅僅是它功能的冰山一角吧

感謝閱讀,希望能幫助到大家,謝謝大家對(duì)本站的支持!

相關(guān)文章

  • angularJS1 url中攜帶參數(shù)的獲取方法

    angularJS1 url中攜帶參數(shù)的獲取方法

    今天小編就為大家分享一篇angularJS1 url中攜帶參數(shù)的獲取方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2018-10-10
  • ionic3+Angular4實(shí)現(xiàn)接口請(qǐng)求及本地json文件讀取示例

    ionic3+Angular4實(shí)現(xiàn)接口請(qǐng)求及本地json文件讀取示例

    本篇文章主要介紹了ionic3+Angular4實(shí)現(xiàn)接口請(qǐng)求及本地json文件讀取示例,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • AngularJs 最新驗(yàn)證手機(jī)號(hào)碼的實(shí)例,成功測(cè)試通過(guò)

    AngularJs 最新驗(yàn)證手機(jī)號(hào)碼的實(shí)例,成功測(cè)試通過(guò)

    下面小編就為大家分享一篇AngularJs 最新驗(yàn)證手機(jī)號(hào)碼的實(shí)例,成功測(cè)試通過(guò),具有很好的參考價(jià)值。希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2017-11-11
  • AngularJS框架的ng-app指令與自動(dòng)加載實(shí)現(xiàn)方法分析

    AngularJS框架的ng-app指令與自動(dòng)加載實(shí)現(xiàn)方法分析

    這篇文章主要介紹了AngularJS框架的ng-app指令與自動(dòng)加載實(shí)現(xiàn)方法,結(jié)合實(shí)例形式分析了ng-app指令的功能及自動(dòng)加載機(jī)制的實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2017-01-01
  • 在Angular使用ng-container元素的操作詳解

    在Angular使用ng-container元素的操作詳解

    ng-container 是 Angular 2+ 中可用的一個(gè)元素,可以作為結(jié)構(gòu)指令的宿主,在本文中,您將探討可以使用 ng-container 解決的場(chǎng)景,文中有相關(guān)的代碼示例供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-02-02
  • AngularJS入門(mén)知識(shí)之MVW類框架的編程思想探討

    AngularJS入門(mén)知識(shí)之MVW類框架的編程思想探討

    這篇文章主要介紹了AngularJS入門(mén)知識(shí)之MVW類框架的編程思想探討,本文通過(guò)實(shí)現(xiàn)兩個(gè)簡(jiǎn)單的業(yè)務(wù)需求,探討AngularJS和傳統(tǒng)的JavaScript控制DOM實(shí)現(xiàn)方式的差別,并嘗試?yán)斫?MVW此類框架在流行的Web前端開(kāi)發(fā)中的編程思想,需要的朋友可以參考下
    2014-12-12
  • angula中使用iframe點(diǎn)擊后不執(zhí)行變更檢測(cè)的問(wèn)題

    angula中使用iframe點(diǎn)擊后不執(zhí)行變更檢測(cè)的問(wèn)題

    這篇文章主要介紹了angula中使用iframe點(diǎn)擊后不執(zhí)行變更檢測(cè)問(wèn)題,本文給大家分享解決方案,通過(guò)實(shí)例代碼給的大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2020-05-05
  • angular+webpack2實(shí)戰(zhàn)例子

    angular+webpack2實(shí)戰(zhàn)例子

    本篇文章主要介紹了angular+webpack2實(shí)戰(zhàn)例子,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2017-05-05
  • Angular4 組件通訊方法大全(推薦)

    Angular4 組件通訊方法大全(推薦)

    這篇文章主要介紹了Angular4 組件通訊方法大全(推薦),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-07-07
  • Angular6升級(jí)到Angular8報(bào)錯(cuò)問(wèn)題的解決合集

    Angular6升級(jí)到Angular8報(bào)錯(cuò)問(wèn)題的解決合集

    這篇文章主要介紹了Angular6升級(jí)到Angular8報(bào)錯(cuò)問(wèn)題的解決合集,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-03-03

最新評(píng)論

定远县| 静宁县| 彝良县| 织金县| 淳安县| 惠安县| 安阳县| 梁山县| 孝感市| 睢宁县| 灌南县| 睢宁县| 连平县| 南陵县| 涿州市| 平江县| 昌黎县| 宜君县| 巨鹿县| 卢氏县| 常山县| 乌拉特中旗| 齐河县| 高安市| 左权县| 山阴县| 普兰县| 自贡市| 六盘水市| 中牟县| 大冶市| 武夷山市| 衡阳县| 调兵山市| 禹城市| 弋阳县| 天全县| 常州市| 岳西县| 汕头市| 平武县|