Fixed #113 - scroll bouncing regardless of window size, fixes pull to refresh

This commit is contained in:
Max Lynch
2013-11-11 16:54:01 -06:00
parent 2ffb925a97
commit 262a4cc9a8
6 changed files with 21 additions and 35 deletions

View File

@ -641,6 +641,7 @@ angular.module('ionic.ui.list', ['ngAnimate'])
isEditing: '=', isEditing: '=',
deleteIcon: '@', deleteIcon: '@',
reorderIcon: '@', reorderIcon: '@',
hasPullToRefresh: '@',
onRefresh: '&', onRefresh: '&',
onRefreshOpening: '&' onRefreshOpening: '&'
}, },
@ -663,7 +664,7 @@ angular.module('ionic.ui.list', ['ngAnimate'])
var lv = new ionic.views.ListView({ var lv = new ionic.views.ListView({
el: $element[0], el: $element[0],
listEl: $element[0].children[0], listEl: $element[0].children[0],
hasPullToRefresh: (typeof $scope.onRefresh !== 'undefined'), hasPullToRefresh: (typeof $scope.hasPullToRefresh !== 'false'),
onRefresh: function() { onRefresh: function() {
$scope.onRefresh(); $scope.onRefresh();
}, },

4
dist/js/ionic.js vendored
View File

@ -2411,6 +2411,7 @@ window.ionic = {
var parentWidth = this.el.parentNode.offsetWidth; var parentWidth = this.el.parentNode.offsetWidth;
var parentHeight = this.el.parentNode.offsetHeight; var parentHeight = this.el.parentNode.offsetHeight;
/*
var maxX = Math.min(0, (-totalWidth + parentWidth)); var maxX = Math.min(0, (-totalWidth + parentWidth));
var maxY = Math.min(0, (-totalHeight + parentHeight)); var maxY = Math.min(0, (-totalHeight + parentHeight));
@ -2418,6 +2419,7 @@ window.ionic = {
if((this.isHorizontalEnabled && maxX == 0) || (this.isVerticalEnabled && maxY == 0)) { if((this.isHorizontalEnabled && maxX == 0) || (this.isVerticalEnabled && maxY == 0)) {
return; return;
} }
*/
this.x = scrollLeft; this.x = scrollLeft;
this.y = scrollTop; this.y = scrollTop;
@ -3176,8 +3178,6 @@ window.ionic = {
this._isDragging = false; this._isDragging = false;
console.log(e.gesture.direction);
// Check if this is a reorder drag // Check if this is a reorder drag
if(ionic.DomUtil.getParentOrSelfWithClass(e.target, ITEM_DRAG_CLASS) && (e.gesture.direction == 'up' || e.gesture.direction == 'down')) { if(ionic.DomUtil.getParentOrSelfWithClass(e.target, ITEM_DRAG_CLASS) && (e.gesture.direction == 'up' || e.gesture.direction == 'down')) {
var item = this._getItem(e.target); var item = this._getItem(e.target);

View File

@ -84,6 +84,7 @@ angular.module('ionic.ui.list', ['ngAnimate'])
isEditing: '=', isEditing: '=',
deleteIcon: '@', deleteIcon: '@',
reorderIcon: '@', reorderIcon: '@',
hasPullToRefresh: '@',
onRefresh: '&', onRefresh: '&',
onRefreshOpening: '&' onRefreshOpening: '&'
}, },
@ -106,7 +107,7 @@ angular.module('ionic.ui.list', ['ngAnimate'])
var lv = new ionic.views.ListView({ var lv = new ionic.views.ListView({
el: $element[0], el: $element[0],
listEl: $element[0].children[0], listEl: $element[0].children[0],
hasPullToRefresh: (typeof $scope.onRefresh !== 'undefined'), hasPullToRefresh: (typeof $scope.hasPullToRefresh !== 'false'),
onRefresh: function() { onRefresh: function() {
$scope.onRefresh(); $scope.onRefresh();
}, },

View File

@ -64,9 +64,19 @@
<body> <body>
<div ng-controller="TestCtrl" class="reveal-animation scroll-content"> <div ng-controller="TestCtrl" class="reveal-animation scroll-content">
<list is-editing="isEditingItems" on-refresh-holding="almostRefreshing()" on-refresh-opening="almostRefreshProjects(ratio)" on-refresh="refreshProjects()" animation="my-repeat-animation" delete-icon="icon ion-minus-circled" reorder-icon="icon ion-navicon"> <list is-editing="isEditingItems"
<list-refresher> on-refresh-holding="almostRefreshing()"
</list-refresher> on-refresh-opening="almostRefreshProjects(ratio)"
on-refresh="refreshProjects()"
animation="my-repeat-animation"
delete-icon="icon ion-minus-circled"
reorder-icon="icon ion-navicon">
<refresher>
<div id="refresh-content">
<i class="icon ion-ios7-reloading"></i>
</div>
</refresher>
<item <item
ng-repeat="item in items" ng-repeat="item in items"
buttons="item.buttons" buttons="item.buttons"
@ -88,32 +98,6 @@
<script> <script>
angular.module('navTest', ['ionic.ui.list', 'ionic.ui.content', 'ngAnimate']) angular.module('navTest', ['ionic.ui.list', 'ionic.ui.content', 'ngAnimate'])
.directive('spinner', function() {
return {
restrict: 'E',
replace: true,
scope: {
ratio: '='
},
template: '<div class="spinner"><div class="spin-thing"></div></div>',
link: function($scope, $element, $attr) {
$scope.$watch('ratio', function(value) {
if(value > 0.97) {
value = 1;
}
var a = (value * 360) % 360;
var r = (a * Math.PI) / 180;
var x = (Math.sin(r) * 20) + 14;
var y = (Math.cos(r) * -20) + 14;
$element[0].firstElementChild.style.webkitTransform = 'translate3d(' + x + 'px, ' + y + 'px, 0)';
//$element[0].firstElementChild.setAttribute('d', anim);
});
}
}
})
.controller('TestCtrl', function($scope) { .controller('TestCtrl', function($scope) {
$scope.refreshRatio = { ratio: 0 }; $scope.refreshRatio = { ratio: 0 };
var removeItem = function(item) { var removeItem = function(item) {

View File

@ -376,8 +376,6 @@
this._isDragging = false; this._isDragging = false;
console.log(e.gesture.direction);
// Check if this is a reorder drag // Check if this is a reorder drag
if(ionic.DomUtil.getParentOrSelfWithClass(e.target, ITEM_DRAG_CLASS) && (e.gesture.direction == 'up' || e.gesture.direction == 'down')) { if(ionic.DomUtil.getParentOrSelfWithClass(e.target, ITEM_DRAG_CLASS) && (e.gesture.direction == 'up' || e.gesture.direction == 'down')) {
var item = this._getItem(e.target); var item = this._getItem(e.target);

View File

@ -463,6 +463,7 @@
var parentWidth = this.el.parentNode.offsetWidth; var parentWidth = this.el.parentNode.offsetWidth;
var parentHeight = this.el.parentNode.offsetHeight; var parentHeight = this.el.parentNode.offsetHeight;
/*
var maxX = Math.min(0, (-totalWidth + parentWidth)); var maxX = Math.min(0, (-totalWidth + parentWidth));
var maxY = Math.min(0, (-totalHeight + parentHeight)); var maxY = Math.min(0, (-totalHeight + parentHeight));
@ -470,6 +471,7 @@
if((this.isHorizontalEnabled && maxX == 0) || (this.isVerticalEnabled && maxY == 0)) { if((this.isHorizontalEnabled && maxX == 0) || (this.isVerticalEnabled && maxY == 0)) {
return; return;
} }
*/
this.x = scrollLeft; this.x = scrollLeft;
this.y = scrollTop; this.y = scrollTop;