From bdca923cb54be5b98360528873ff329a92cc464b Mon Sep 17 00:00:00 2001 From: Robert Jackson Date: Sun, 17 Apr 2016 21:57:08 -0400 Subject: [PATCH] [BUGFIX beta] Fix revalidation hook messages. The source of the revalidation was being lost, and the message indicated the root `ownerView` (which was not the thing that triggered a rerender). Also, the `_dispatching` flag was not being changed after calling `didInsertElement` / `didUpdateElement` and before calling `didRender`. --- packages/ember-htmlbars/lib/renderer.js | 1 + packages/ember-htmlbars/lib/utils/subscribe.js | 2 +- packages/ember-views/lib/mixins/view_support.js | 4 ++-- 3 files changed, 4 insertions(+), 3 deletions(-) diff --git a/packages/ember-htmlbars/lib/renderer.js b/packages/ember-htmlbars/lib/renderer.js index a4048151d55..ab193f196c7 100755 --- a/packages/ember-htmlbars/lib/renderer.js +++ b/packages/ember-htmlbars/lib/renderer.js @@ -85,6 +85,7 @@ Renderer.prototype.dispatchLifecycleHooks = case 'didUpdate': this.didUpdate(hook.view); break; } + ownerView._dispatching = 'didRender'; this.didRender(hook.view); } diff --git a/packages/ember-htmlbars/lib/utils/subscribe.js b/packages/ember-htmlbars/lib/utils/subscribe.js index 12f1636f99a..b8f07e5fcb8 100644 --- a/packages/ember-htmlbars/lib/utils/subscribe.js +++ b/packages/ember-htmlbars/lib/utils/subscribe.js @@ -21,6 +21,6 @@ export default function subscribe(node, env, scope, stream) { node.shouldReceiveAttrs = true; } - node.ownerNode.emberView.scheduleRevalidate(node, labelFor(stream)); + node.ownerNode.emberView.scheduleRevalidate(node, labelFor(stream), undefined, component); })); } diff --git a/packages/ember-views/lib/mixins/view_support.js b/packages/ember-views/lib/mixins/view_support.js index 38606543a2a..07459b13bf1 100644 --- a/packages/ember-views/lib/mixins/view_support.js +++ b/packages/ember-views/lib/mixins/view_support.js @@ -508,7 +508,7 @@ export default Mixin.create({ this.scheduledRevalidation = false; }, - scheduleRevalidate(node, label, manualRerender) { + scheduleRevalidate(node, label, manualRerender, revalidationSource) { if (node && !this._dispatching && this.env.renderedNodes.has(node)) { if (manualRerender) { deprecate( @@ -528,7 +528,7 @@ export default Mixin.create({ } deprecate( - `A property of ${this} was modified inside the ${this._dispatching} hook. You should never change properties on components, services or models during ${this._dispatching} because it causes significant performance degradation.`, + `A property of ${revalidationSource || this} was modified inside the ${this._dispatching} hook. You should never change properties on components, services or models during ${this._dispatching} because it causes significant performance degradation.`, !this._dispatching, { id: 'ember-views.dispatching-modify-property', until: '3.0.0' } );