1
jqueryで動作するのに新しい角度が使用されました。カスタム無限スクロールトリガー
ユーザーがドキュメントのほぼ一番下にいるときにhttp.get要求をトリガーするようにスクロールをリッスンするディレクティブを設定しました。すべてうまく動作しますが、私はイベントがすぐに多くの時間を引き起こすのを避けることはできません。
ここにいくつかのコードがあります。
HTML:
div(class="home-flex", ng-scroll, infinite-request="addMore()", ng-disabled)
div(class="home-article", ng-repeat="article in articles", ng-cloak)
img(class="home-article-image", ng-src="{{ article.imageUrl }}", ng-cloak)
ディレクティブ:
nemi.directive('ngScroll', function($window, $document){
return {
link: function(scope, element, attrs){
$document.on('scroll', function(element){
var height = Math.max(
document.body.scrollHeight, document.documentElement.scrollHeight,
document.body.offsetHeight, document.documentElement.offsetHeight,
document.body.clientHeight, document.documentElement.clientHeight
);
// console.log("window height : " + $window.innerHeight)
// console.log("scroll from top : " + $window.pageYOffset);
// console.log("scroll from top + window height : " + ($window.innerHeight + $window.pageYOffset))
// console.log("doc height : " + height);
// console.log("scroll/doc : " + $window.pageYOffset/height);
if ((($window.pageYOffset + $window.innerHeight)/height) > 0.6) {
console.log("trigger");
scope.$apply(attrs.infiniteRequest);
}
})
}
}
})
がannnnd私のコントローラ:
nemi.controller('homeController', [ '$scope', '$http', '$window', function($scope, $http){
$http.get('/articles').success(function(res){
$scope.articles = res;
}).error(function(data){
console.log(data);
});
var wait = true;
$scope.addMore = function() {
if (wait === true) {
wait = false;
console.log("trigger");
$http.get('/articles').success(function(res) {
res.forEach(function(elem){
$scope.articles.push(elem);
})
wait = true;
}).error(function(){
console.log("scroll failed");
})
}
}
}]);
私の "ブール待つ" との機能をブロックするために、私の悲惨なattempteはなく、[保存]をdoesntの作品一度に多くの要求から私を救ってください。
私はNG-を無効にして別のものを試してみましたが、何も今のところ私のために働いていない
あなたは、そのプロセスですでに要求を行うかどうかチェックしますかaddMore
&から起こっている
$http
によって返された約束から助けを得ることができ
はあなたに感謝します!これらの約束を詳細にチェックする必要があります。私はそれが何であるか分かりませんでした。 – hadesMM
@hadesMMはこの[面白い記事](http://andyshora.com/promises-angularjs-explained-as-cartoon.html)を見て、それが何であるかについていくつか考えています。私はそれが動作しなければならないと思う... –
ありがとう私は今これを読むつもりです – hadesMM