Angularjs判斷頁面是否已經渲染結束(動態給標簽長度)


相信大家都會碰到這樣的問題。頁面循環li。但是因為個數不知道。沒有辦法給li設置固定寬度。那么這時就需要動態計算數據長度並動態改變li的寬度

 1 <!--周邊信息-->  
 2         <div class="around_information">  
 3             <div class="title_info">  
 4                 <i></i>  
 5                 <p>周邊信息</p>  
 6             </div>  
 7             <div class="around_info">  
 8                 <div class="around_table">  
 9                     <ul>  
10                         <li class="aroundLength" ng-repeat="data in aroundInfoData"on-finish-render-filters>  
11                             <label>{{data.aroundName}}</label>  
12                             <p>{{data.aroundNum}}</p>  
13                         </li>  
14                     </ul>  
15                 </div>  
16             </div>  
17         </div> 

<li></li>可以默認給個固定寬度,當然不給也是完全OK的

控制器中的數據信息:

$scope.aroundInfoData =[{"aroundName":"所在商圈", "aroundNum":"李寧商圈"}, {"aroundName":"安踏", "aroundNum":"0"}, {"aroundName":"特步", "aroundNum":"1"}, {"aroundName":"361°", "aroundNum":"0"},{"aroundName":"高中", "aroundNum":"3"}, {"aroundName":"耐克", "aroundNum":"0"},{"aroundName":"阿迪達斯", "aroundNum":"2"}, {"aroundName":"瑜伽館", "aroundNum":"1"},{"aroundName":"大學", "aroundNum":"2"}, {"aroundName":"籃球館", "aroundNum":"0"},{"aroundName":"健身房", "aroundNum":"0"}]

json數據可以自己造。想造多少都可以

需要監聽頁面是否渲染結束。AngularJS有$last是最后一個元素。用到指令

app.directive('onFinishRenderFilters', function ($timeout) {
    return {
        restrict: 'A',
        link: function(scope, element, attr) {
            if (scope.$last === true) {
                $timeout(function() {
                    scope.$emit('ngRepeatFinished');
                });
            }
        }
    };
});

Controller里面用$on去監聽

$scope.$on('ngRepeatFinished', function (ngRepeatFinishedEvent) {
        //監聽頁面渲染結束
        $scope.showLength =$scope.aroundInfoData.length  //把實際需要展示數據的格式賦給showLength
        var titleWidth = document.getElementsByClassName("aroundLength");
        for(var i =0;i<document.getElementsByClassName("aroundLength").length;i++){
            document.getElementsByClassName("aroundLength")[i].style.width = (100/$scope.showLength)+"%";
        }
    });

預期結果:

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM