Skip to content
This repository was archived by the owner on Feb 22, 2018. It is now read-only.

Commit be1f6b0

Browse files
jbdeboertravis@travis-ci.org
authored andcommitted
revert(NgView): Reverts "Make use of the ViewPort"
This reverts commit ed40de4. Conflicts: lib/routing/ng_view.dart test/routing/routing_spec.dart
1 parent a91bbca commit be1f6b0

File tree

3 files changed

+59
-80
lines changed

3 files changed

+59
-80
lines changed

lib/routing/ng_view.dart

Lines changed: 33 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -58,49 +58,47 @@ part of angular.routing;
5858
@Decorator(
5959
selector: 'ng-view',
6060
module: NgView.module,
61-
children: Directive.TRANSCLUDE_CHILDREN)
61+
visibility: Directive.CHILDREN_VISIBILITY)
6262
class NgView implements DetachAware, RouteProvider {
6363
static final Module _module = new Module()
6464
..bind(RouteProvider, toFactory: (i) => i.get(NgView));
65-
6665
static module() => _module;
6766

68-
final NgRoutingHelper _locationService;
69-
final ViewCache _viewCache;
70-
final Injector _injector;
71-
final Scope _scope;
67+
final NgRoutingHelper locationService;
68+
final ViewCache viewCache;
69+
final Injector injector;
70+
final Element element;
71+
final Scope scope;
7272
RouteHandle _route;
7373

74-
final ViewPort _viewPort;
75-
7674
View _view;
77-
Scope _childScope;
75+
Scope _scope;
7876
Route _viewRoute;
7977

80-
81-
NgView(this._viewCache, Injector injector, Router router,
82-
this._scope, this._viewPort)
83-
: _injector = injector,
84-
_locationService = injector.get(NgRoutingHelper)
78+
NgView(this.element, this.viewCache,
79+
Injector injector, Router router,
80+
this.scope)
81+
: injector = injector,
82+
locationService = injector.get(NgRoutingHelper)
8583
{
86-
RouteProvider routeProvider = _injector.parent.get(NgView);
84+
RouteProvider routeProvider = injector.parent.get(NgView);
8785
_route = routeProvider != null ?
8886
routeProvider.route.newHandle() :
8987
router.root.newHandle();
90-
_locationService._registerPortal(this);
88+
locationService._registerPortal(this);
9189
_maybeReloadViews();
9290
}
9391

9492
void _maybeReloadViews() {
95-
if (_route.isActive) _locationService._reloadViews(startingFrom: _route);
93+
if (_route.isActive) locationService._reloadViews(startingFrom: _route);
9694
}
9795

98-
void detach() {
96+
detach() {
9997
_route.discard();
100-
_locationService._unregisterPortal(this);
98+
locationService._unregisterPortal(this);
10199
}
102100

103-
void _show(_View viewDef, Route route, List<Module> modules) {
101+
_show(_View viewDef, Route route, List<Module> modules) {
104102
assert(route.isActive);
105103

106104
if (_viewRoute != null) return;
@@ -115,51 +113,40 @@ class NgView implements DetachAware, RouteProvider {
115113
});
116114

117115
var viewInjector = modules == null ?
118-
_injector :
119-
forceNewDirectivesAndFormatters(_injector, modules);
116+
injector :
117+
forceNewDirectivesAndFormatters(injector, modules);
120118

121119
var newDirectives = viewInjector.get(DirectiveMap);
122120
var viewFuture = viewDef.templateHtml != null ?
123-
new Future.value(_viewCache.fromHtml(viewDef.templateHtml, newDirectives)) :
124-
_viewCache.fromUrl(viewDef.template, newDirectives);
125-
121+
new Future.value(viewCache.fromHtml(viewDef.templateHtml, newDirectives)) :
122+
viewCache.fromUrl(viewDef.template, newDirectives);
126123
viewFuture.then((viewFactory) {
127124
_cleanUp();
128-
_childScope = _scope.createChild(new PrototypeMap(_scope.context));
125+
_scope = scope.createChild(new PrototypeMap(scope.context));
129126
_view = viewFactory(
130-
viewInjector.createChild([new Module()..bind(Scope, toValue: _childScope)]));
131-
132-
var view = _view;
133-
_scope.rootScope.domWrite(() {
134-
_viewPort.insert(view);
135-
});
127+
viewInjector.createChild([new Module()..bind(Scope, toValue: _scope)]));
128+
_view.nodes.forEach((elm) => element.append(elm));
136129
});
137130
}
138131

139-
void _cleanUp() {
132+
_cleanUp() {
140133
if (_view == null) return;
141134

142-
var view = _view;
143-
var childScope = _childScope;
144-
_scope.rootScope.domWrite(() {
145-
_viewPort.remove(view);
146-
childScope.destroy();
147-
});
135+
_view.nodes.forEach((node) => node.remove());
136+
_scope.destroy();
148137

149138
_view = null;
150-
_childScope = null;
139+
_scope = null;
151140
}
152141

153142
Route get route => _viewRoute;
154-
155143
String get routeName => _viewRoute.name;
156-
157144
Map<String, String> get parameters {
158145
var res = <String, String>{};
159-
var route = _viewRoute;
160-
while (route != null) {
161-
res.addAll(route.parameters);
162-
route = route.parent;
146+
var p = _viewRoute;
147+
while (p != null) {
148+
res.addAll(p.parameters);
149+
p = p.parent;
163150
}
164151
return res;
165152
}

test/routing/ng_view_spec.dart

Lines changed: 13 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ main() {
1010
TestBed _;
1111
Router router;
1212

13-
beforeEachModule((Module module) {
14-
module
13+
beforeEachModule((Module m) {
14+
m
1515
..install(new AngularMockModule())
1616
..bind(RouteInitializerFn, toImplementation: FlatRouteInitializer);
1717
});
@@ -28,22 +28,19 @@ main() {
2828

2929

3030
it('should switch template', async(() {
31-
Element root = _.compile('<div><ng-view></ng-view></div>');
31+
Element root = _.compile('<ng-view></ng-view>');
3232
expect(root.text).toEqual('');
3333

3434
router.route('/foo');
3535
microLeap();
36-
_.rootScope.apply();
3736
expect(root.text).toEqual('Foo');
3837

3938
router.route('/bar');
4039
microLeap();
41-
_.rootScope.apply();
4240
expect(root.text).toEqual('Bar');
4341

4442
router.route('/foo');
4543
microLeap();
46-
_.rootScope.apply();
4744
expect(root.text).toEqual('Foo');
4845
}));
4946

@@ -59,31 +56,29 @@ main() {
5956

6057
it('should switch template when route is already active', async(() {
6158
// Force the routing system to initialize.
62-
_.compile('<div><ng-view></ng-view></div>');
59+
_.compile('<ng-view></ng-view>');
6360

6461
router.route('/foo');
6562
microLeap();
66-
Element root = _.compile('<div><ng-view></ng-view></div>');
63+
Element root = _.compile('<ng-view></ng-view>');
6764
expect(root.text).toEqual('');
6865

69-
microLeap();
7066
_.rootScope.apply();
67+
microLeap();
7168
expect(root.text).toEqual('Foo');
7269
}));
7370

7471

7572
it('should clear template when route is deactivated', async(() {
76-
Element root = _.compile('<div><ng-view></ng-view></div>');
73+
Element root = _.compile('<ng-view></ng-view>');
7774
expect(root.text).toEqual('');
7875

7976
router.route('/foo');
8077
microLeap();
81-
_.rootScope.apply();
8278
expect(root.text).toEqual('Foo');
8379

8480
router.route('/baz'); // route without a template
8581
microLeap();
86-
_.rootScope.apply();
8782
expect(root.text).toEqual('');
8883
}));
8984

@@ -94,8 +89,8 @@ main() {
9489
TestBed _;
9590
Router router;
9691

97-
beforeEachModule((Module module) {
98-
module
92+
beforeEachModule((Module m) {
93+
m
9994
..install(new AngularMockModule())
10095
..bind(RouteInitializerFn, toImplementation: NestedRouteInitializer);
10196
});
@@ -116,29 +111,25 @@ main() {
116111
});
117112

118113
it('should switch nested templates', async(() {
119-
Element root = _.compile('<div><ng-view></ng-view></div>');
114+
Element root = _.compile('<ng-view></ng-view>');
120115
expect(root.text).toEqual('');
121116

122117
router.route('/library/all');
123118
microLeap();
124-
_.rootScope.apply();
125119
expect(root.text).toEqual('LibraryBooks');
126120

127121
router.route('/library/1234');
128122
microLeap();
129-
_.rootScope.apply();
130123
expect(root.text).toEqual('LibraryBook 1234');
131124

132125
// nothing should change here
133126
router.route('/library/1234/overview');
134127
microLeap();
135-
_.rootScope.apply();
136128
expect(root.text).toEqual('LibraryBook 1234');
137129

138130
// nothing should change here
139131
router.route('/library/1234/read');
140132
microLeap();
141-
_.rootScope.apply();
142133
expect(root.text).toEqual('LibraryRead Book 1234');
143134
}));
144135
});
@@ -148,8 +139,8 @@ main() {
148139
TestBed _;
149140
Router router;
150141

151-
beforeEachModule((Module module) {
152-
module
142+
beforeEachModule((Module m) {
143+
m
153144
..install(new AngularMockModule())
154145
..bind(RouteInitializerFn, toValue: (router, views) {
155146
views.configure({
@@ -166,12 +157,11 @@ main() {
166157
});
167158

168159
it('should switch inline templates', async(() {
169-
Element root = _.compile('<div><ng-view></ng-view></div>');
160+
Element root = _.compile('<ng-view></ng-view>');
170161
expect(root.text).toEqual('');
171162

172163
router.route('/foo');
173164
microLeap();
174-
_.rootScope.apply();
175165
expect(root.text).toEqual('Hello');
176166
}));
177167
});

test/routing/routing_spec.dart

Lines changed: 13 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -158,12 +158,12 @@ main() {
158158
_.injector.get(TemplateCache)
159159
.put('foo.html', new HttpResponse(200, '<h1>Foo</h1>'));
160160

161-
Element root = _.compile('<div><ng-view></ng-view><div>');
161+
Element root = _.compile('<ng-view></ng-view>');
162162
expect(root.text).toEqual('');
163163

164164
router.route('/foo');
165165
microLeap();
166-
_.rootScope.apply();
166+
167167
expect(enterCount).toBe(1);
168168
expect(root.text).toEqual('Foo');
169169
}));
@@ -231,18 +231,18 @@ main() {
231231
_.injector.get(TemplateCache)
232232
.put('foo.html', new HttpResponse(200, '<h1>Foo</h1>'));
233233

234-
Element root = _.compile('<div><ng-view></ng-view><div>');
234+
Element root = _.compile('<ng-view></ng-view>');
235235
expect(root.text).toEqual('');
236236

237237
router.route('/foo');
238238
microLeap();
239-
_.rootScope.apply();
239+
240240
expect(root.text).toEqual('Foo');
241241
expect(leaveCount).toBe(0);
242242

243243
router.route('/bar');
244244
microLeap();
245-
_.rootScope.apply();
245+
246246
expect(root.text).toEqual('');
247247
expect(leaveCount).toBe(1);
248248
}));
@@ -263,12 +263,12 @@ main() {
263263
_.injector.get(TemplateCache)
264264
.put('foo.html', new HttpResponse(200, '<div make-it-new>Old!</div>'));
265265

266-
Element root = _.compile('<div><ng-view></ng-view><div>');
266+
Element root = _.compile('<ng-view></ng-view>');
267267
expect(root.text).toEqual('');
268268

269269
router.route('/foo');
270270
microLeap();
271-
_.rootScope.apply();
271+
272272
expect(root.text).toEqual('New!');
273273
}));
274274

@@ -288,12 +288,12 @@ main() {
288288
_.injector.get(TemplateCache)
289289
.put('foo.html', new HttpResponse(200, '<div make-it-new>Old!</div>'));
290290

291-
Element root = _.compile('<div><ng-view></ng-view><div>');
291+
Element root = _.compile('<ng-view></ng-view>');
292292
expect(root.text).toEqual('');
293293

294294
router.route('/foo');
295295
microLeap();
296-
_.rootScope.apply();
296+
297297
expect(root.text).toEqual('New!');
298298
}));
299299

@@ -313,12 +313,13 @@ main() {
313313
_.injector.get(TemplateCache)
314314
.put('foo.html', new HttpResponse(200, '<div>{{\'World\' | hello}}</div>'));
315315

316-
Element root = _.compile('<div><ng-view></ng-view></div>');
316+
Element root = _.compile('<ng-view></ng-view>');
317317
expect(root.text).toEqual('');
318318

319319
router.route('/foo');
320320
microLeap();
321321
_.rootScope.apply();
322+
322323
expect(root.text).toEqual('Hello, World!');
323324
}));
324325

@@ -338,12 +339,13 @@ main() {
338339
_.injector.get(TemplateCache)
339340
.put('foo.html', new HttpResponse(200, '<div>{{\'World\' | hello}}</div>'));
340341

341-
Element root = _.compile('<div><ng-view></ng-view></div>');
342+
Element root = _.compile('<ng-view></ng-view>');
342343
expect(root.text).toEqual('');
343344

344345
router.route('/foo');
345346
microLeap();
346347
_.rootScope.apply();
348+
347349
expect(root.text).toEqual('Hello, World!');
348350
}));
349351

0 commit comments

Comments
 (0)