【发布时间】:2017-01-07 21:22:29
【问题描述】:
我尝试在 angular.js 组件上应用 ngInfiniteScroll。
我知道需要使用ng-repeat,实际上我不知道如何应用。
在我的例子中,数据被构建为 HTML 文档以进行重复。
$ctrl.htmlViews的每一个数据都是这样的。
<li ...> ... </li> <li ...> ... </li> ... <li ...> ... </li>
我想在下面的<ul> 中附加这些文件。
<div class="scroll" id="antTalkList" view-type="total
<ul class="user_list list ng-scope"
infinite-scroll='$ctrl.loadMore()' infinite-scroll-distance='1'>
<div ng-repeat="item in $ctrl.htmlViews"><!-- I don't wanna use this -->
<ng-bind-html ng-bind-html="item"> </ng-bind-html>
</div>
</ul>
</div>
这是我的控制器代码 sn-p。
.component('antList', {
templateUrl : 'templates/ant-list.html'
, controller : function AntListController($http, $attrs, $sce){
var self = this;
this.htmlViews = [];
this.loading = false;
this.loadMore = function(){
$http({
method : "GET",
url : 'ant/list?pageCount=20&startIndex='
+ $('#antTalkList .user_list li').size()
+ '§ionId=' +$attrs.talkType
}).then(function mySucces(response) {
self.htmlViews.push($sce.trustAsHtml(response.data));
});
}
}
})
$http ajax 请求的结果,已经内置在 HTML 代码中,如下所示。
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
...
我认为带有ng-repat 的标签被重复了,所以我编写了类似上面的代码。但是,我不想使用<div ng-repeat= ....></div>。因为那样的话,结果页面会是这样的。
<ul ...>
<div>
<li ...>
...
</div>
<div>
<li ...>
...
</div>
</ul>
我认为这看起来很糟糕。如何在没有 div 等附加标签的情况下重复?
还有一个问题。
我声明了infinite-scroll='$ctrl.loadMore()' infinite-scroll-distance='1',但angular.js在加载后没有调用loadMore()函数(这意味着初始化时只有1个请求,不再调用该函数)。
【问题讨论】:
-
你可以将
ng-repeat移动到- 标签中,它可以工作:
<li ng-repeat="item in $ctrl.htmlViews"> - 标签中,它可以工作:
标签: javascript angularjs nginfinitescroll