@@ -15,27 +15,25 @@ describe('uiScroll', function () {
15
15
myApp . controller ( 'MyBottomController' , function ( $scope ) {
16
16
$scope . name = 'MyBottomController' ;
17
17
} ) ;
18
- var customDirTemplate ;
19
- myApp . directive ( 'myDir' , function ( ) {
20
- return {
21
- restrict : 'E' ,
22
- controllerAs : 'ctrl' ,
23
- controller : function ( ) { this . show = true ; } ,
24
- template : customDirTemplate
25
- } ;
26
- } ) ;
27
-
28
- var setDir = function ( viewport ) {
29
- customDirTemplate =
30
- '<div ' + ( viewport ? 'ui-scroll-viewport' : '' ) + ' style="height:200px" ng-if="ctrl.show">' +
31
- '<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
32
- '{{$index}}: {{item}}' +
33
- '</div>' +
34
- '</div>' ;
35
- } ;
36
18
37
19
beforeEach ( module ( 'myApp' ) ) ;
38
20
21
+ var setDirective = function ( options ) {
22
+ return function ( ) {
23
+ var directive = {
24
+ restrict : 'E' ,
25
+ controller : function ( ) {
26
+ this . show = true ;
27
+ }
28
+ } ;
29
+ if ( options . ctrlAs ) {
30
+ directive . controllerAs = options . ctrlAs ;
31
+ }
32
+ directive . template = options . template ;
33
+ return directive ;
34
+ } ;
35
+ } ;
36
+
39
37
var executeTest = function ( template , ctrlSelector , scopeContainer ) {
40
38
inject ( function ( $rootScope , $compile , $timeout ) {
41
39
// build and render
@@ -72,7 +70,7 @@ describe('uiScroll', function () {
72
70
describe ( 'Adapter assigning' , function ( ) {
73
71
74
72
it ( 'should work in simplest case (viewport)' , function ( ) {
75
- var template =
73
+ var template =
76
74
'<div ng-controller="MyTopController">' +
77
75
'<div ng-controller="MyInnerController">' +
78
76
'<div ng-controller="MyBottomController">' +
@@ -88,7 +86,7 @@ describe('uiScroll', function () {
88
86
} ) ;
89
87
90
88
it ( 'should work in simplest case (no viewport)' , function ( ) {
91
- var template =
89
+ var template =
92
90
'<div ng-controller="MyTopController">' +
93
91
'<div ng-controller="MyInnerController" ng-if="name">' +
94
92
'<div ng-controller="MyBottomController" ng-if="name">' +
@@ -102,7 +100,7 @@ describe('uiScroll', function () {
102
100
} ) ;
103
101
104
102
it ( 'should work with additional container (viewport)' , function ( ) {
105
- var template =
103
+ var template =
106
104
'<div ng-controller="MyTopController">' +
107
105
'<div ng-controller="MyInnerController">' +
108
106
'<div ng-controller="MyBottomController">' +
@@ -118,7 +116,7 @@ describe('uiScroll', function () {
118
116
} ) ;
119
117
120
118
it ( 'should work with additional container (no viewport)' , function ( ) {
121
- var template =
119
+ var template =
122
120
'<div ng-controller="MyTopController">' +
123
121
'<div ng-controller="MyInnerController" ng-if="name">' +
124
122
'<div ng-controller="MyBottomController" ng-if="name">' +
@@ -132,7 +130,7 @@ describe('uiScroll', function () {
132
130
} ) ;
133
131
134
132
it ( 'should work for "on" syntax (viewport)' , function ( ) {
135
- var template =
133
+ var template =
136
134
'<div ng-controller="MyTopController">' +
137
135
'<div ng-controller="MyInnerController" ng-if="name">' +
138
136
'<div ng-controller="MyBottomController" ng-if="name">' +
@@ -148,7 +146,7 @@ describe('uiScroll', function () {
148
146
} ) ;
149
147
150
148
it ( 'should work for "on" syntax (no viewport)' , function ( ) {
151
- var template =
149
+ var template =
152
150
'<div ng-controller="MyTopController">' +
153
151
'<div ng-controller="MyInnerController" ng-if="name">' +
154
152
'<div ng-controller="MyBottomController" ng-if="name">' +
@@ -162,7 +160,7 @@ describe('uiScroll', function () {
162
160
} ) ;
163
161
164
162
it ( 'should work for "Controller As" syntax (viewport)' , function ( ) {
165
- var template =
163
+ var template =
166
164
'<div ng-controller="MyTopController">' +
167
165
'<div ng-controller="MyInnerController as ctrl" ng-if="name">' +
168
166
'<div ng-controller="MyBottomController" ng-if="name">' +
@@ -178,7 +176,7 @@ describe('uiScroll', function () {
178
176
} ) ;
179
177
180
178
it ( 'should work for "Controller As" syntax (no viewport)' , function ( ) {
181
- var template =
179
+ var template =
182
180
'<div ng-controller="MyTopController">' +
183
181
'<div ng-controller="MyInnerController as ctrl" ng-if="name">' +
184
182
'<div ng-controller="MyBottomController" ng-if="name">' +
@@ -192,30 +190,67 @@ describe('uiScroll', function () {
192
190
} ) ;
193
191
194
192
it ( 'should work for custom directive with "Controller As" syntax (viewport)' , function ( ) {
195
- setDir ( true ) ;
193
+ myApp . directive ( 'myDir1' , setDirective ( {
194
+ ctrlAs : 'ctrl' ,
195
+ template :
196
+ '<div ui-scroll-viewport style="height:200px" ng-if="ctrl.show">' +
197
+ '<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
198
+ '{{$index}}: {{item}}' +
199
+ '</div>' +
200
+ '</div>'
201
+ } ) ) ;
196
202
var template =
197
203
'<div ng-controller="MyTopController">' +
198
204
'<div ng-controller="MyInnerController" ng-if="name">' +
199
205
'<div ng-controller="MyBottomController" ng-if="name">' +
200
- '<my-dir ></my-dir >' +
206
+ '<my-dir1 ></my-dir1 >' +
201
207
'</div>' +
202
208
'</div>' +
203
209
'</div>' ;
204
210
executeTest ( template , 'MyBottomController' , 'ctrl' ) ;
205
211
} ) ;
206
212
207
- /*it('should work for custom directive with "Controller As" syntax (no viewport)', function () {
208
- setDir(false);
213
+ it ( 'should work for custom directive with "Controller As" syntax (no viewport)' , function ( ) {
214
+ myApp . directive ( 'myDir2' , setDirective ( {
215
+ ctrlAs : 'ctrl' ,
216
+ template :
217
+ '<div style="height:200px" ng-if="ctrl.show">' +
218
+ '<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
219
+ '{{$index}}: {{item}}' +
220
+ '</div>' +
221
+ '</div>'
222
+ } ) ) ;
209
223
var template =
210
224
'<div ng-controller="MyTopController">' +
211
225
'<div ng-controller="MyInnerController" ng-if="name">' +
212
226
'<div ng-controller="MyBottomController" ng-if="name">' +
213
- '<my-dir ></my-dir >' +
227
+ '<my-dir2 ></my-dir2 >' +
214
228
'</div>' +
215
229
'</div>' +
216
230
'</div>' ;
217
231
executeTest ( template , 'MyBottomController' , 'ctrl' ) ;
218
- });*/
232
+ } ) ;
233
+
234
+ it ( 'should work for custom directive with the adapter defined on some external controller' , function ( ) {
235
+ myApp . directive ( 'myDir3' , setDirective ( {
236
+ ctrlAs : 'ctrl2' ,
237
+ template :
238
+ '<div style="height:200px" ng-if="ctrl2.show">' +
239
+ '<div ui-scroll="item in myMultipageDatasource" adapter="ctrl.adapter">' +
240
+ '{{$index}}: {{item}}' +
241
+ '</div>' +
242
+ '</div>'
243
+ } ) ) ;
244
+ var template =
245
+ '<div ng-controller="MyTopController">' +
246
+ '<div ng-controller="MyInnerController as ctrl" ng-if="name">' +
247
+ '<div ng-controller="MyBottomController" ng-if="name">' +
248
+ '<my-dir3></my-dir3>' +
249
+ '</div>' +
250
+ '</div>' +
251
+ '</div>' ;
252
+ executeTest ( template , 'MyInnerController as ctrl' , 'ctrl' ) ;
253
+ } ) ;
219
254
} ) ;
220
255
221
256
} ) ;
0 commit comments