(function() { 'use strict'; angular.module('ionic.ui.list', ['ngAnimate']) .directive('listItem', function() { return { restrict: 'E', require: ['?^list', '?^virtualList'], replace: true, transclude: true, scope: { item: '=', onSelect: '&', onDelete: '&', canDelete: '@', canReorder: '@', canSwipe: '@', buttons: '=', }, template: '\
\
\
\ \
\
', /* template: '
  • \
    \ \
    \
    \
    \
    \ \
    \
    \ \
    \
  • ',*/ link: function($scope, $element, $attr, list) { // Grab the parent list controller if(list[0]) { list = list[0]; } else if(list[1]) { list = list[1]; } $scope.isEditing = false; $scope.deleteIcon = list.scope.deleteIcon; $scope.reorderIcon = list.scope.reorderIcon; $scope.buttonClicked = function(button) { button.onButtonClicked && button.onButtonClicked($scope.item, button); }; list.scope.$watch('isEditing', function(v) { $scope.isEditing = v; }); } }; }) .directive('list', function() { return { restrict: 'E', replace: true, transclude: true, scope: { isEditing: '=', deleteIcon: '@', reorderIcon: '@' }, // So we can require being under this controller: function($scope) { var _this = this; this.scope = $scope; $scope.$watch('isEditing', function(v) { _this.isEditing = true; }); }, template: '', compile: function(element, attr, transclude) { return function($scope, $element, $attr) { var lv = new ionic.views.List({el: $element[0]}); if(attr.animation) { $element.addClass(attr.animation); } }; } }; }) .directive('virtualList', function() { return { restrict: 'E', replace: true, transclude: true, scope: { isEditing: '=', deleteIcon: '@', reorderIcon: '@', itemHeight: '@' }, // So we can require being under this controller: function($scope) { var _this = this; this.scope = $scope; $scope.$watch('isEditing', function(v) { _this.isEditing = true; }); }, template: '
    ', compile: function(element, attr, transclude) { return function($scope, $element, $attr) { var lv = new ionic.views.ListView({ el: $element[0], listEl: $element[0].children[0], isVirtual: true, itemHeight: $scope.itemHeight, renderViewport: function(high, low, start, end) { console.log('RENDER VIEWPORT', high, low, start, end); } }); if(attr.animation) { $element.addClass(attr.animation); } }; } }; }); })();