@@ -226,18 +226,11 @@ uiView = [
226
226
inherited = $element.inheritedData('$uiView') || rootData,
227
227
name = $interpolate(attrs['uiView'] || attrs['name'] || '')(scope) || '$default';
228
228
229
- let previousEl: JQuery, currentEl: JQuery, currentScope: IScope, viewConfig: Ng1ViewConfig;
230
-
231
- const uiViewId = $view.registerView('ng1', inherited.$uiView.id, name, renderContentIntoUIViewPortal);
232
-
233
- scope.$on('$destroy', function () {
234
- trace.traceUIViewEvent('Destroying/Unregistering', activeUIView);
235
- $view.deregisterView(uiViewId);
236
- });
229
+ let previousEl: JQuery, currentEl: JQuery, currentScope: IScope;
237
230
238
231
const activeUIView: ActiveUIView = {
239
232
$type: 'ng1',
240
- id: uiViewId , // filled in later
233
+ id: null , // filled in later
241
234
name: name, // ui-view name (<div ui-view="name"></div>
242
235
fqn: inherited.$uiView.fqn ? inherited.$uiView.fqn + '.' + name : name, // fully qualified name, describes location in DOM
243
236
config: null, // The ViewConfig loaded (from a state.views definition)
@@ -255,22 +248,15 @@ uiView = [
255
248
};
256
249
257
250
trace.traceUIViewEvent('Linking', activeUIView);
251
+ const uiViewId = $view.registerView('ng1', inherited.$uiView.id, name, renderContentIntoUIViewPortal);
258
252
259
- function renderContentIntoUIViewPortal(renderCommand: UIViewPortalRenderCommand) {
260
- if (renderCommand.command === 'RENDER_DEFAULT_CONTENT') {
261
- viewConfig = undefined;
262
- } else if (renderCommand.command === 'RENDER_ROUTED_VIEW') {
263
- viewConfig = renderCommand.routedViewConfig as Ng1ViewConfig;
264
- } else if (renderCommand.command === 'RENDER_INTEROP_DIV') {
265
- }
266
-
267
- updateView(viewConfig);
268
- }
253
+ scope.$on('$destroy', function () {
254
+ trace.traceUIViewEvent('Destroying/Unregistering', activeUIView);
255
+ $view.deregisterView(uiViewId);
256
+ });
269
257
270
258
$element.data('$uiView', { $uiView: activeUIView });
271
259
272
- updateView();
273
-
274
260
function cleanupLastView() {
275
261
if (previousEl) {
276
262
trace.traceUIViewEvent('Removing (previous) el', previousEl.data('$uiView'));
@@ -297,13 +283,25 @@ uiView = [
297
283
}
298
284
}
299
285
300
- function updateView(config?: Ng1ViewConfig) {
286
+ function renderContentIntoUIViewPortal(renderCommand: UIViewPortalRenderCommand) {
287
+ if (isString(activeUIView) && activeUIView.id !== renderCommand.id) {
288
+ throw new Error(
289
+ `Received a render command for wrong UIView. Render command id: ${renderCommand.id}, but this UIView id: ${activeUIView.id}`
290
+ );
291
+ }
292
+
293
+ activeUIView.id = renderCommand.id;
294
+ const viewConfig =
295
+ renderCommand.command === 'RENDER_ROUTED_VIEW'
296
+ ? (renderCommand.routedViewConfig as Ng1ViewConfig)
297
+ : undefined;
298
+
301
299
const newScope = scope.$new();
302
300
const animEnter = $q.defer(),
303
301
animLeave = $q.defer();
304
302
305
303
const $uiViewData: UIViewData = {
306
- $cfg: config ,
304
+ $cfg: viewConfig ,
307
305
$uiView: activeUIView,
308
306
};
309
307
@@ -354,7 +352,7 @@ uiView = [
354
352
*
355
353
* @param {Object} event Event object.
356
354
*/
357
- currentScope.$emit('$viewContentLoaded', config || viewConfig);
355
+ currentScope.$emit('$viewContentLoaded', viewConfig);
358
356
currentScope.$eval(onloadExp);
359
357
}
360
358
};
0 commit comments