このようなコードを使用して、AngularJS でエンドレス スクロール効果を作成しています。ul
スクロール可能なコンテナー (この場合は) のコンテンツを別の html ファイルに移動し、ng-view を使用してコンテンツをロードすることで、コードの一部をリファクタリングしようとしました。
これが完了した後は、scope.$apply(attr.whenScrolled);
何の効果もありません。loadMore()
メソッドは単に呼び出されなくなりました。
ul-content を別のファイルに移動して動的にロードした後、スコープについて何か変更しましたか?
更新: コードは次のとおりです。
App.directive('whenScrolled', function() {
return function(scope, element, attr) {
var raw = element[0];
// binding on element doesn't work so this is a temp fix
$(document).bind('scroll', function() {
var scrollPercentage = (($(window).scrollTop() + $(window).height()) / $(document).height()) * 100;
if(scrollPercentage > 75 && !scope.in_progress && !scope.is_reached_end)
{
console.log('test')
scope.$apply(attr.whenScrolled);
}
});
};
});
App.config(['$routeProvider', function($routeProvider){
$routeProvider.when('/', {
templateUrl: 'views/offers.html',
controller: 'OffersCntl'
});
}]);
景色:
<div class="tileContainer" ng-controller="OffersCntl">
<h2>Something very important :)</h2>
<div id="tiles" class="tiles" when-scrolled="loadMore()">
<div ng-view></div>
</div>
</div>
私はかなり太ったコントローラを持っていますが、それを使って投稿を汚したくありません。基本的に scope.loadMore メソッドがあります。