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
ですか?
もう1つの問題。
私は宣言しinfinite-scroll='$ctrl.loadMore()' infinite-scroll-distance='1'
ましたが、angular.js はロード後に関数を呼び出しませんloadMore()
(つまり、初期化時に 1 つの要求だけで、関数を呼び出す必要はありません)。