mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
refactor(ionicContent): use $-prefix for onRefresh and onScroll events
Closes #675
This commit is contained in:
@@ -43,12 +43,13 @@ angular.module('ionic.ui.scroll')
|
||||
var refresherHeight = self.refresher.clientHeight || 0;
|
||||
scrollView.activatePullToRefresh(refresherHeight, function() {
|
||||
self.refresher.classList.add('active');
|
||||
$scope.$onRefreshOpening && $scope.$onRefreshOpening();
|
||||
}, function() {
|
||||
self.refresher.classList.remove('refreshing');
|
||||
self.refresher.classList.remove('active');
|
||||
}, function() {
|
||||
self.refresher.classList.add('refreshing');
|
||||
$scope.onRefresh && $scope.onRefresh();
|
||||
$scope.$onRefresh && $scope.$onRefresh();
|
||||
$scope.$parent.$broadcast('scroll.onRefresh');
|
||||
});
|
||||
}
|
||||
|
||||
11
js/ext/angular/src/directive/ionicContent.js
vendored
11
js/ext/angular/src/directive/ionicContent.js
vendored
@@ -57,10 +57,11 @@ function($parse, $timeout, $ionicScrollDelegate, $controller, $ionicBind) {
|
||||
});
|
||||
|
||||
$ionicBind($scope, $attr, {
|
||||
onRefresh: '&',
|
||||
onRefreshOpening: '&',
|
||||
onScroll: '&',
|
||||
onScrollComplete: '&',
|
||||
//Use $ to stop onRefresh from recursively calling itself
|
||||
$onRefresh: '&onRefresh',
|
||||
$onRefreshOpening: '&onRefreshOpening',
|
||||
$onScroll: '&onScroll',
|
||||
$onScrollComplete: '&onScrollComplete',
|
||||
refreshComplete: '=',
|
||||
onInfiniteScroll: '&',
|
||||
infiniteScrollDistance: '@',
|
||||
@@ -99,7 +100,7 @@ function($parse, $timeout, $ionicScrollDelegate, $controller, $ionicBind) {
|
||||
scrollingY: $scope.$eval($scope.hasScrollY) !== false,
|
||||
scrollEventInterval: parseInt($scope.scrollEventInterval, 10) || 20,
|
||||
scrollingComplete: function() {
|
||||
$scope.onScrollComplete({
|
||||
$scope.$onScrollComplete({
|
||||
scrollTop: this.__scrollTop,
|
||||
scrollLeft: this.__scrollLeft
|
||||
});
|
||||
|
||||
@@ -74,12 +74,9 @@ angular.module('ionic.ui.service.scrollDelegate', [])
|
||||
}
|
||||
|
||||
$element.on('scroll', function(e) {
|
||||
if ( !$scope.onScroll ) {
|
||||
return;
|
||||
}
|
||||
var detail = (e.originalEvent || e).detail || {};
|
||||
|
||||
$scope.onScroll && $scope.onScroll({
|
||||
$scope.$onScroll && $scope.$onScroll({
|
||||
event: e,
|
||||
scrollTop: detail.scrollTop || 0,
|
||||
scrollLeft: detail.scrollLeft || 0
|
||||
|
||||
@@ -97,7 +97,8 @@ describe('$ionicScroll Controller', function() {
|
||||
doneCb = done;
|
||||
});
|
||||
|
||||
scope.onRefresh = jasmine.createSpy('onRefresh');
|
||||
scope.$onRefresh = jasmine.createSpy('onRefresh');
|
||||
scope.$onRefreshOpening = jasmine.createSpy('onRefreshOpening');
|
||||
|
||||
timeout.flush();
|
||||
var refresher = ctrl.refresher;
|
||||
@@ -108,17 +109,18 @@ describe('$ionicScroll Controller', function() {
|
||||
startCb();
|
||||
expect(refresher.classList.contains('active')).toBe(true);
|
||||
expect(refresher.classList.contains('refreshing')).toBe(false);
|
||||
expect(scope.$onRefreshOpening).toHaveBeenCalled();
|
||||
|
||||
refreshingCb();
|
||||
expect(refresher.classList.contains('active')).toBe(false);
|
||||
expect(refresher.classList.contains('refreshing')).toBe(false);
|
||||
|
||||
expect(scope.onRefresh).not.toHaveBeenCalled();
|
||||
expect(scope.$onRefresh).not.toHaveBeenCalled();
|
||||
|
||||
doneCb();
|
||||
expect(refresher.classList.contains('active')).toBe(false);
|
||||
expect(refresher.classList.contains('refreshing')).toBe(true);
|
||||
expect(scope.onRefresh).toHaveBeenCalled();
|
||||
expect(scope.$onRefresh).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
});
|
||||
|
||||
@@ -37,12 +37,12 @@ describe('Ionic ScrollDelegate Service', function() {
|
||||
scope = el.scope();
|
||||
scope.$apply();
|
||||
var top, left;
|
||||
scope.onScroll = jasmine.createSpy('scroll').andCallFake(function(data) {
|
||||
scope.$onScroll = jasmine.createSpy('scroll').andCallFake(function(data) {
|
||||
top = data.scrollTop;
|
||||
left = data.scrollLeft;
|
||||
});
|
||||
ionic.trigger('scroll', {target: el[0]});
|
||||
expect(scope.onScroll).toHaveBeenCalled();
|
||||
expect(scope.$onScroll).toHaveBeenCalled();
|
||||
expect(top).toBe(0);
|
||||
expect(left).toBe(0);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user