mirror of
https://github.com/ionic-team/ionic-framework.git
synced 2026-03-13 10:22:08 +08:00
21
js/ext/angular/src/directive/ionicScroll.js
vendored
21
js/ext/angular/src/directive/ionicScroll.js
vendored
@@ -23,18 +23,10 @@ angular.module('ionic.ui.scroll', [])
|
||||
* @param {boolean=} scrollbar-x Whether to show the horizontal scrollbar. Default false.
|
||||
* @param {boolean=} scrollbar-x Whether to show the vertical scrollbar. Default true.
|
||||
*/
|
||||
.directive('ionScroll', ['$parse', '$timeout', '$controller', function($parse, $timeout, $controller) {
|
||||
.directive('ionScroll', ['$parse', '$timeout', '$controller', '$ionicBind', function($parse, $timeout, $controller, $ionicBind) {
|
||||
return {
|
||||
restrict: 'E',
|
||||
scope: {
|
||||
direction: '@',
|
||||
paging: '@',
|
||||
onRefresh: '&',
|
||||
onScroll: '&',
|
||||
scroll: '@',
|
||||
scrollbarX: '@',
|
||||
scrollbarY: '@',
|
||||
},
|
||||
scope: true,
|
||||
controller: function() {},
|
||||
compile: function(element, attr) {
|
||||
element.addClass('scroll-view');
|
||||
@@ -48,6 +40,15 @@ angular.module('ionic.ui.scroll', [])
|
||||
function prelink($scope, $element, $attr) {
|
||||
var scrollView, scrollCtrl;
|
||||
|
||||
$ionicBind($scope, $attr, {
|
||||
direction: '@',
|
||||
paging: '@',
|
||||
$onScroll: '&onScroll',
|
||||
scroll: '@',
|
||||
scrollbarX: '@',
|
||||
scrollbarY: '@',
|
||||
});
|
||||
|
||||
if (angular.isDefined($attr.padding)) {
|
||||
$scope.$watch($attr.padding, function(newVal) {
|
||||
innerElement.toggleClass('padding', !!newVal);
|
||||
|
||||
@@ -21,6 +21,18 @@ describe('Ionic Content directive', function() {
|
||||
expect(element.hasClass('scroll-content')).toBe(true);
|
||||
});
|
||||
|
||||
it('has $onScroll (used by $ionicScrollController)', function() {
|
||||
element = compile('<ion-scroll on-scroll="foo()"></ion-scroll>')(scope);
|
||||
scope = element.scope();
|
||||
scope.foo = jasmine.createSpy('foo');
|
||||
scope.$apply();
|
||||
expect(typeof scope.$onScroll).toBe('function');
|
||||
|
||||
expect(scope.foo).not.toHaveBeenCalled();
|
||||
scope.$onScroll();
|
||||
expect(scope.foo).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('should add padding classname', function() {
|
||||
var element = compile('<ion-content padding="shouldPad"></ion-content>')(scope);
|
||||
var scrollElement = element.find('.scroll');
|
||||
|
||||
@@ -19,6 +19,18 @@ describe('Ionic Scroll Directive', function() {
|
||||
expect(element.controller('$ionicScroll').element).toBe(element[0]);
|
||||
});
|
||||
|
||||
it('has $onScroll (used by $ionicScrollController)', function() {
|
||||
element = compile('<ion-scroll on-scroll="foo()"></ion-scroll>')(scope);
|
||||
scope = element.scope();
|
||||
scope.foo = jasmine.createSpy('foo');
|
||||
scope.$apply();
|
||||
expect(typeof scope.$onScroll).toBe('function');
|
||||
|
||||
expect(scope.foo).not.toHaveBeenCalled();
|
||||
scope.$onScroll();
|
||||
expect(scope.foo).toHaveBeenCalled();
|
||||
});
|
||||
|
||||
it('Has scroll-view class', function() {
|
||||
element = compile('<ion-scroll></ion-scroll>')(scope);
|
||||
expect(element.hasClass('scroll-view')).toBe(true);
|
||||
|
||||
Reference in New Issue
Block a user