免费观看又色又爽又黄的小说免费_美女福利视频国产片_亚洲欧美精品_美国一级大黄大色毛片

AngularJS監(jiān)聽ng-repeat渲染完成的方法

某個項目,我的網(wǎng)頁中有一個列表<ul>元素,樣式如下:

在做網(wǎng)站、成都網(wǎng)站設(shè)計中從網(wǎng)站色彩、結(jié)構(gòu)布局、欄目設(shè)置、關(guān)鍵詞群組等細(xì)微處著手,突出企業(yè)的產(chǎn)品/服務(wù)/品牌,幫助企業(yè)鎖定精準(zhǔn)用戶,提高在線咨詢和轉(zhuǎn)化,使成都網(wǎng)站營銷成為有效果、有回報的無錫營銷推廣。創(chuàng)新互聯(lián)公司專業(yè)成都網(wǎng)站建設(shè)十多年了,客戶滿意度97.8%,歡迎成都創(chuàng)新互聯(lián)客戶聯(lián)系。

AngularJS監(jiān)聽ng-repeat渲染完成的方法

實際上它是通過Angular的ng-repeat形成的,html中的代碼是:

<li ng-repeat="for list in lists()" id="{{ list.id }}">{{ list.name }}</li>

圖中下方的新建清單button,點擊之后就往lists數(shù)組中push了一個新的list對象,此時頁面會自動渲染,也對應(yīng)增加一個<li>,如下:

AngularJS監(jiān)聽ng-repeat渲染完成的方法

注意MyList1一直是active狀態(tài)的(class="active"),我的需求是新增list后,把新增的list設(shè)置為active,即在新增后就變成下面這種樣式:

AngularJS監(jiān)聽ng-repeat渲染完成的方法

剛開始我嘗試在button對應(yīng)的函數(shù)中,往lists數(shù)組中push了新的list對象后,使用document.getElementById獲取到新增的<li>對象,然后為其添加一個class="active",結(jié)果發(fā)現(xiàn)獲取到的DOM對象為null,經(jīng)過搜索發(fā)現(xiàn)原因是:往lists數(shù)組push對象后,數(shù)組發(fā)生改變,所有的<li>都會重新渲染,在push完成之后馬上去找新增的DOM對象,DOM還沒渲染好,因此是獲取不到的。解法是:使用AngularJS的指令去監(jiān)聽ng-repeat是否渲染完成,在渲染完成后,再去取新增的<li>對象,這個網(wǎng)上有很多相關(guān)的內(nèi)容了,代碼如下:

myapp.directive('repeatFinish', function ($timeout) {
  return {
    restrict: "C",
    link: function (scope, element, attr) {
      if(scope.$last === true){
        $timeout(function () {
          scope.change_list(element[0]);
        }, 10);
      }
    }
  }
});

上述代碼建立了一個名為repeatFinish的指令,restrict: "C"表示指令放在DOMclass中(駝峰形式,即class="repeat-finish"),scope.$last === true表示已經(jīng)渲染到了最后一個對象,此時執(zhí)行change_list函數(shù)(定義在控制器中,功能是把當(dāng)前active的對象取消active,然后設(shè)置傳入的DOM對象為active),element[0]可以直接取到當(dāng)前渲染的DOM元素。注意我使用了$timeout,10ms后執(zhí)行change_list,我發(fā)現(xiàn)直接使用change_list還是會找不到DOM,原因不明,期待大神解答。

以上就是本文的全部內(nèi)容,希望對大家的學(xué)習(xí)有所幫助,也希望大家多多支持創(chuàng)新互聯(lián)。

新聞名稱:AngularJS監(jiān)聽ng-repeat渲染完成的方法
文章來源:http://newbst.com/article30/jhsipo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供全網(wǎng)營銷推廣網(wǎng)站維護(hù)網(wǎng)站建設(shè)、品牌網(wǎng)站建設(shè)、網(wǎng)站營銷、網(wǎng)頁設(shè)計公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

手機(jī)網(wǎng)站建設(shè)