我尝试在 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>
这是我的控制器代码片段。
.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));
});
}
}
})
ajax 请求的结果$http
,已经内置在 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 个请求,并且不再调用该函数)。