【发布时间】:2014-10-10 15:17:15
【问题描述】:
在我的应用程序中,我想为 div 使用自定义滚动条。所以我使用了 ng-scrollbar,它可以很好地处理静态数据。但是,每当我使用 ng-repeat 获取数据时,它就无法正常工作。请在这方面帮助我。提前致谢。
myFile.html
<style>
.scrollme {
max-height: 300px;
}
</style>
<div ng-app="myapp">
<div class="container" ng-controller="myctrl">
<button class="btn btn-info" ng-click="add();">add</button>
<button class="btn btn-warning" ng-click="remove();">remove</button>
<div class="well" >
<div class="scrollme" ng-scrollbar bottom rebuild-on="rebuild:me">
<h1>Scroll me down!</h1>
<p ng-repeat="mi in me">{{mi.name}}</p>
</div>
</div>
</div>
</div>
myCtrl.js
var myapp = angular.module('myapp', ["ngScrollbar"]);
myapp.controller('myctrl', function ($scope) {
$scope.me = [];
for(var i=1;i<=20;i++){
$scope.me.push({"name":i});
}
var a = $scope.me.length;
$scope.add = function(){
$scope.me.push({"name":$scope.me.length+1});
$scope.$broadcast('rebuild:me');
}
$scope.remove = function(){
$scope.me.pop();
}
});
【问题讨论】:
-
单击添加按钮后滚动条是否起作用?两件事:您可能希望将rebuild:me 事件添加到scope.remove,因为您告诉滚动条在添加时进行更新,因此在删除时也进行更新是有意义的。您可能还想在控制器末尾添加事件广播,以便它在初始渲染时触发,而无需单击 add()。可能必须进入 $timeout(fund(){}, 0) 以允许 ngRepeat 渲染,idk。
标签: angularjs angularjs-ng-repeat