diff --git a/dist/angular-vs-repeat.js b/dist/angular-vs-repeat.js index 3d9efb8..738a0af 100644 --- a/dist/angular-vs-repeat.js +++ b/dist/angular-vs-repeat.js @@ -202,7 +202,7 @@ function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else i ngRepeatExpression = _analyzeNgRepeatUsage2[1], isNgRepeatStart = _analyzeNgRepeatUsage2[2]; - var expressionMatches = /^\s*(\S+)\s+in\s+([\S\s]+?)(track\s+by\s+\S+)?$/.exec(ngRepeatExpression); + var expressionMatches = /^\s*(\S+)\s+in\s+([\S\s]+?)(track\s+by\s+.+)?$/.exec(ngRepeatExpression); var _expressionMatches = _slicedToArray(expressionMatches, 4), lhs = _expressionMatches[1], @@ -222,7 +222,7 @@ function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else i compileRepeatContainer.empty(); return { - pre: function pre($scope, $element, $attrs) { + pre: function pre($scope, $element, $attrs, _controller, transclude) { var _$scope$$eval; function _parseSize(options) { @@ -410,7 +410,9 @@ function _slicedToArray(arr, i) { if (Array.isArray(arr)) { return arr; } else i childClone.addClass('vs-repeat-repeated-element'); repeatContainer.append($beforeContent); repeatContainer.append(childClone); - $compile(childClone)($scope); + $compile(childClone)($scope, null, { + parentBoundTranscludeFn: transclude + }); repeatContainer.append($afterContent); $scope.vsRepeat.startIndex = 0; $scope.vsRepeat.endIndex = 0; diff --git a/dist/angular-vs-repeat.min.js b/dist/angular-vs-repeat.min.js index 0554921..7cf56f1 100644 --- a/dist/angular-vs-repeat.min.js +++ b/dist/angular-vs-repeat.min.js @@ -1 +1 @@ -function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t"),b=U.element("<"+o+' class="vs-repeat-after-content">"),I=null===R.size,w=R.scrollParent?"window"===R.scrollParent?U.element(Y):X.call(z,R.scrollParent):z,S=R.horizontal?"clientWidth":"clientHeight",a=R.horizontal?"offsetWidth":"offsetHeight",T=R.horizontal?"scrollWidth":"scrollHeight",O=R.horizontal?"scrollLeft":"scrollTop";if((g.vsRepeat.totalSize=0)===w.length)throw"Specified scroll parent selector did not match any element";if(g.vsRepeat.$scrollParent=w,g.vsRepeat.sizesCumulative=[],R.debug){var s="window"===R.scrollParent?U.element(document.body):w,i=U.element('
');i.css("position","window"===R.scrollParent?"fixed":"absolute"),s.append(i),g.$on("$destroy",function(){i.remove()})}var A,C,M,_,l,d=K(w[0],S)||50;function c(){!y||y.length<1?(g[q]=[],x=0,g.vsRepeat.sizesCumulative=[0]):(x=y.length,R.size?u():p()),h()}function u(){var n=0t?P(e,t,n,a,o+1):P(e,t,a,r,o+1)}return[t>e[r]?r:n,t=R.hunkSize||0===g.vsRepeat.startIndex&&0!==A?u=!0:(Math.abs(g.vsRepeat.endIndex-C)>=R.hunkSize||g.vsRepeat.endIndex===x&&C!==x)&&(u=!0):u=g.vsRepeat.startIndex!==A||g.vsRepeat.endIndex!==C),u){var p;g[q]=y.slice(g.vsRepeat.startIndex,g.vsRepeat.endIndex),g.$emit("vsRepeatInnerCollectionUpdated",g.vsRepeat.startIndex,g.vsRepeat.endIndex,A,C),R.scrolledToEnd&&(p=y.length-R.scrolledToEndOffset,(g.vsRepeat.endIndex>=p&&Cg.vsRepeat.startIndex&&g.$eval(R.scrolledToBeginning)),A=g.vsRepeat.startIndex,C=g.vsRepeat.endIndex;var v=g.vsRepeat.sizesCumulative[g.vsRepeat.startIndex]+R.offsetBefore,f=g.vsRepeat.sizesCumulative[g.vsRepeat.startIndex+g[q].length]+R.offsetBefore,h=g.vsRepeat.totalSize;$.css(B(v+"px")),b.css(B(h-f+"px"))}return u}R.horizontal?($.css("height","100%"),b.css("height","100%")):($.css("width","100%"),b.css("width","100%")),e.vsRepeatOptions&&g.$watchCollection(e.vsRepeatOptions,function(e){var t=_extends({},R,e);JSON.stringify(t)!==JSON.stringify(R)&&(Object.assign(R,e),n(R),h())}),g.$watchCollection(N,function(){var e=0\n\t \t.vs-repeat-debug-element {\n top: 50%;\n left: 0;\n right: 0;\n height: 1px;\n background: red;\n z-index: 99999999;\n box-shadow: 0 0 20px red;\n }\n\n .vs-repeat-debug-element + .vs-repeat-debug-element {\n display: none;\n }\n\n .vs-repeat-before-content,\n .vs-repeat-after-content {\n border: none !important;\n padding: 0 !important;\n }\n '),"undefined"!=typeof module&&module.exports&&(module.exports=e.name)}(window,window.angular); \ No newline at end of file +function _toConsumableArray(e){if(Array.isArray(e)){for(var t=0,n=new Array(e.length);t"),b=G.element("<"+s+' class="vs-repeat-after-content">"),I=null===R.size,w=R.scrollParent?"window"===R.scrollParent?G.element(X):K.call(z,R.scrollParent):z,S=R.horizontal?"clientWidth":"clientHeight",i=R.horizontal?"offsetWidth":"offsetHeight",T=R.horizontal?"scrollWidth":"scrollHeight",O=R.horizontal?"scrollLeft":"scrollTop";if((g.vsRepeat.totalSize=0)===w.length)throw"Specified scroll parent selector did not match any element";if(g.vsRepeat.$scrollParent=w,g.vsRepeat.sizesCumulative=[],R.debug){var l="window"===R.scrollParent?G.element(document.body):w,d=G.element('
');d.css("position","window"===R.scrollParent?"fixed":"absolute"),l.append(d),g.$on("$destroy",function(){d.remove()})}var A,C,M,_,c,u=V(w[0],S)||50;function p(){!y||y.length<1?(g[W]=[],x=0,g.vsRepeat.sizesCumulative=[0]):(x=y.length,R.size?v():f()),P()}function v(){var n=0t?L(e,t,n,a,o+1):L(e,t,a,r,o+1)}return[t>e[r]?r:n,t=R.hunkSize||0===g.vsRepeat.startIndex&&0!==A?u=!0:(Math.abs(g.vsRepeat.endIndex-C)>=R.hunkSize||g.vsRepeat.endIndex===x&&C!==x)&&(u=!0):u=g.vsRepeat.startIndex!==A||g.vsRepeat.endIndex!==C),u){var p;g[W]=y.slice(g.vsRepeat.startIndex,g.vsRepeat.endIndex),g.$emit("vsRepeatInnerCollectionUpdated",g.vsRepeat.startIndex,g.vsRepeat.endIndex,A,C),R.scrolledToEnd&&(p=y.length-R.scrolledToEndOffset,(g.vsRepeat.endIndex>=p&&Cg.vsRepeat.startIndex&&g.$eval(R.scrolledToBeginning)),A=g.vsRepeat.startIndex,C=g.vsRepeat.endIndex;var v=g.vsRepeat.sizesCumulative[g.vsRepeat.startIndex]+R.offsetBefore,f=g.vsRepeat.sizesCumulative[g.vsRepeat.startIndex+g[W].length]+R.offsetBefore,h=g.vsRepeat.totalSize;$.css(B(v+"px")),b.css(B(h-f+"px"))}return u}R.horizontal?($.css("height","100%"),b.css("height","100%")):($.css("width","100%"),b.css("width","100%")),e.vsRepeatOptions&&g.$watchCollection(e.vsRepeatOptions,function(e){var t=_extends({},R,e);JSON.stringify(t)!==JSON.stringify(R)&&(Object.assign(R,e),o(R),P())}),g.$watchCollection(F,function(){var e=0\n\t \t.vs-repeat-debug-element {\n top: 50%;\n left: 0;\n right: 0;\n height: 1px;\n background: red;\n z-index: 99999999;\n box-shadow: 0 0 20px red;\n }\n\n .vs-repeat-debug-element + .vs-repeat-debug-element {\n display: none;\n }\n\n .vs-repeat-before-content,\n .vs-repeat-after-content {\n border: none !important;\n padding: 0 !important;\n }\n '),"undefined"!=typeof module&&module.exports&&(module.exports=e.name)}(window,window.angular); \ No newline at end of file diff --git a/src/angular-vs-repeat.js b/src/angular-vs-repeat.js index dc0fa9c..4ae39cd 100644 --- a/src/angular-vs-repeat.js +++ b/src/angular-vs-repeat.js @@ -215,7 +215,7 @@ const [originalNgRepeatAttr, ngRepeatExpression, isNgRepeatStart] = analyzeNgRepeatUsage(ngRepeatChild); - const expressionMatches = /^\s*(\S+)\s+in\s+([\S\s]+?)(track\s+by\s+\S+)?$/.exec(ngRepeatExpression); + const expressionMatches = /^\s*(\S+)\s+in\s+([\S\s]+?)(track\s+by\s+.+)?$/.exec(ngRepeatExpression); const [, lhs, rhs, rhsSuffix] = expressionMatches; if (isNgRepeatStart) { @@ -230,7 +230,7 @@ compileRepeatContainer.empty(); return { - pre: function($scope, $element, $attrs) { + pre: function($scope, $element, $attrs, _controller, transclude) { function _parseSize(options) { if (typeof options.size === 'number') { options.getSize = () => options.size; @@ -407,7 +407,7 @@ repeatContainer.append($beforeContent); repeatContainer.append(childClone); - $compile(childClone)($scope); + $compile(childClone)($scope, null, { parentBoundTranscludeFn: transclude }); repeatContainer.append($afterContent); $scope.vsRepeat.startIndex = 0;