diff --git a/packages/ember-htmlbars/lib/renderer.js b/packages/ember-htmlbars/lib/renderer.js
index 75ab0104ca7..7c1a05e1e41 100755
--- a/packages/ember-htmlbars/lib/renderer.js
+++ b/packages/ember-htmlbars/lib/renderer.js
@@ -64,11 +64,7 @@ Renderer.prototype.revalidateTopLevelView =
// This guard prevents revalidation on an already-destroyed view.
if (view._renderNode.lastResult) {
view._renderNode.lastResult.revalidate(view.env);
- // supports createElement, which operates without moving the view into
- // the inDOM state.
- if (view._state === 'inDOM') {
- this.dispatchLifecycleHooks(view.env);
- }
+ this.dispatchLifecycleHooks(view.env);
this.clearRenderedViews(view.env);
}
};
@@ -149,13 +145,6 @@ Renderer.prototype.replaceIn =
run.scheduleOnce('render', this, this.renderTopLevelView, view, morph);
};
-Renderer.prototype.createElement =
- function Renderer_createElement(view) {
- let morph = this._dom.createFragmentMorph();
- morph.ownerNode = morph;
- this.prerenderTopLevelView(view, morph);
- };
-
Renderer.prototype.didCreateElement = function (view, element) {
if (element) {
view.element = element;
diff --git a/packages/ember-views/lib/mixins/view_support.js b/packages/ember-views/lib/mixins/view_support.js
index 32b8e937934..26a4ed87603 100644
--- a/packages/ember-views/lib/mixins/view_support.js
+++ b/packages/ember-views/lib/mixins/view_support.js
@@ -114,9 +114,6 @@ export default Mixin.create({
/**
Appends the view's element to the specified parent element.
- If the view does not have an HTML representation yet, `createElement()`
- will be called automatically.
-
Note that this method just schedules the view to be appended; the DOM
element will not be appended to the given element until all bindings have
finished synchronizing.
@@ -297,26 +294,6 @@ export default Mixin.create({
return jQuery(id)[0] || jQuery(id, parentElem)[0];
},
- /**
- Creates a DOM representation of the view and all of its child views by
- recursively calling the `render()` method. Once the element is created,
- it sets the `element` property of the view to the rendered element.
-
- After the element has been inserted into the DOM, `didInsertElement` will
- be called on this view and all of its child views.
-
- @method createElement
- @return {Ember.View} receiver
- @private
- */
- createElement() {
- if (this.element) { return this; }
-
- this.renderer.createElement(this);
-
- return this;
- },
-
/**
Called when a view is going to insert an element into the DOM.
@@ -348,30 +325,6 @@ export default Mixin.create({
*/
willClearRender: K,
- /**
- Destroys any existing element along with the element for any child views
- as well. If the view does not currently have a element, then this method
- will do nothing.
-
- If you implement `willDestroyElement()` on your view, then this method will
- be invoked on your view before your element is destroyed to give you a
- chance to clean up any event handlers, etc.
-
- If you write a `willDestroyElement()` handler, you can assume that your
- `didInsertElement()` handler was called earlier for the same element.
-
- You should not call or override this method yourself, but you may
- want to implement the above callbacks.
-
- @method destroyElement
- @return {Ember.View} receiver
- @private
- */
- destroyElement() {
- this._currentState.destroyElement(this);
- return this;
- },
-
/**
You must call `destroy` on a view to destroy the view (and all of its
child views). This will remove the view from any parent node, then make
diff --git a/packages/ember-views/lib/views/states/default.js b/packages/ember-views/lib/views/states/default.js
index 066581d150f..42f4a788718 100644
--- a/packages/ember-views/lib/views/states/default.js
+++ b/packages/ember-views/lib/views/states/default.js
@@ -38,8 +38,6 @@ export default {
return true; // continue event propagation
},
- destroyElement() { },
-
destroy() { },
rerender(view) {
diff --git a/packages/ember-views/lib/views/states/destroying.js b/packages/ember-views/lib/views/states/destroying.js
index 25c6ea59c67..2be7395e3db 100644
--- a/packages/ember-views/lib/views/states/destroying.js
+++ b/packages/ember-views/lib/views/states/destroying.js
@@ -14,9 +14,6 @@ assign(destroying, {
},
rerender() {
throw new EmberError('You can\'t call rerender on a view being destroyed');
- },
- destroyElement() {
- throw new EmberError('You can\'t call destroyElement on a view being destroyed');
}
});
diff --git a/packages/ember-views/lib/views/states/has_element.js b/packages/ember-views/lib/views/states/has_element.js
index c84691b6b79..82ea3c932e8 100644
--- a/packages/ember-views/lib/views/states/has_element.js
+++ b/packages/ember-views/lib/views/states/has_element.js
@@ -33,10 +33,6 @@ assign(hasElement, {
view.renderer.rerender(view);
},
- destroyElement(view) {
- view.renderer.remove(view, false);
- },
-
destroy(view) {
view.renderer.remove(view, true);
},
diff --git a/packages/ember-views/tests/views/instrumentation_test.js b/packages/ember-views/tests/views/instrumentation_test.js
index 08d5328f6e6..21434a35785 100644
--- a/packages/ember-views/tests/views/instrumentation_test.js
+++ b/packages/ember-views/tests/views/instrumentation_test.js
@@ -50,9 +50,3 @@ QUnit.test('generates the proper instrumentation details when called directly',
confirmPayload(payload, view);
});
-
-QUnit.test('should add ember-view to views', function() {
- run(view, 'createElement');
-
- confirmPayload(beforeCalls[0], view);
-});
diff --git a/packages/ember-views/tests/views/view/append_to_test.js b/packages/ember-views/tests/views/view/append_to_test.js
index bf29ab5575e..e1f73c13b29 100644
--- a/packages/ember-views/tests/views/view/append_to_test.js
+++ b/packages/ember-views/tests/views/view/append_to_test.js
@@ -88,28 +88,6 @@ QUnit.test('raises an assert when a target does not exist in the DOM', function(
});
-QUnit.test('remove removes an element from the DOM', function() {
- willDestroyCalled = 0;
-
- view = View.create({
- willDestroyElement() {
- willDestroyCalled++;
- }
- });
-
- ok(!get(view, 'element'), 'precond - should not have an element');
-
- run(() => view.append());
-
- ok(jQuery('#' + get(view, 'elementId')).length === 1, 'precond - element was inserted');
-
- run(() => view.destroyElement());
-
- ok(jQuery('#' + get(view, 'elementId')).length === 0, 'remove removes an element from the DOM');
- ok(!get(view, 'element'), 'remove nulls out the element');
- equal(willDestroyCalled, 1, 'the willDestroyElement hook was called once');
-});
-
QUnit.test('destroy more forcibly removes the view', function() {
willDestroyCalled = 0;
diff --git a/packages/ember-views/tests/views/view/create_element_test.js b/packages/ember-views/tests/views/view/create_element_test.js
deleted file mode 100644
index ad6558c4976..00000000000
--- a/packages/ember-views/tests/views/view/create_element_test.js
+++ /dev/null
@@ -1,38 +0,0 @@
-import { get } from 'ember-metal/property_get';
-import run from 'ember-metal/run_loop';
-import EmberView from 'ember-views/views/view';
-import { compile } from 'ember-htmlbars-template-compiler';
-
-let view;
-
-QUnit.module('Ember.View#createElement', {
- teardown() {
- run(function() {
- view.destroy();
- });
- }
-});
-
-QUnit.test('returns the receiver', function() {
- view = EmberView.create();
-
- let ret = run(() => view.createElement());
-
- equal(ret, view, 'returns receiver');
-});
-
-QUnit.test('calls render and turns resultant string into element', function() {
- view = EmberView.create({
- tagName: 'span',
- template: compile('foo')
- });
-
- equal(get(view, 'element'), null, 'precondition - has no element');
-
- run(() => view.createElement());
-
- let elem = get(view, 'element');
- ok(elem, 'has element now');
- equal(elem.innerHTML, 'foo', 'has innerHTML from context');
- equal(elem.tagName.toString().toLowerCase(), 'span', 'has tagName from view');
-});
diff --git a/packages/ember-views/tests/views/view/destroy_element_test.js b/packages/ember-views/tests/views/view/destroy_element_test.js
deleted file mode 100644
index 9cf9bf38a8d..00000000000
--- a/packages/ember-views/tests/views/view/destroy_element_test.js
+++ /dev/null
@@ -1,51 +0,0 @@
-import { get } from 'ember-metal/property_get';
-import run from 'ember-metal/run_loop';
-import EmberView from 'ember-views/views/view';
-
-let view;
-
-QUnit.module('EmberView#destroyElement', {
- teardown() {
- run(() => view.destroy());
- }
-});
-
-QUnit.test('if it has no element, does nothing', function() {
- let callCount = 0;
- view = EmberView.create({
- willDestroyElement() { callCount++; }
- });
-
- ok(!get(view, 'element'), 'precond - does NOT have element');
-
- run(() => view.destroyElement());
-
- equal(callCount, 0, 'did not invoke callback');
-});
-
-QUnit.test('returns receiver', function() {
- let ret;
- view = EmberView.create();
-
- run(() => {
- view.createElement();
- ret = view.destroyElement();
- });
-
- equal(ret, view, 'returns receiver');
-});
-
-QUnit.test('removes element from parentNode if in DOM', function() {
- view = EmberView.create();
-
- run(() => view.append());
-
- let parent = view.$().parent();
-
- ok(get(view, 'element'), 'precond - has element');
-
- run(() => view.destroyElement());
-
- equal(view.$(), undefined, 'view has no selector');
- ok(!parent.find('#' + view.get('elementId')).length, 'element no longer in parent node');
-});