Giter Site home page Giter Site logo

will-destroy-element-reproduction's Introduction

Will-destroy-element-reproduction

The basic problem

This is a reproduction of an Ember issue.

You used to be able to set properties in willDestroyElement and have them work before Ember 2.8. This mostly works, except when you have an {{#if}} helper in your template. On Ember 2.8.0, this results in an error:

TypeError: Cannot read property 'push' of null
    at cleanupRenderNode (http://localhost:7357/assets/vendor.js:20703:47)
    at destroyNode (http://localhost:7357/assets/vendor.js:57340:9)
    at Object.visitChildren (http://localhost:7357/assets/vendor.js:56988:7)
    at Object.clearMorph (http://localhost:7357/assets/vendor.js:57357:29)
    at RenderResult.destroy (http://localhost:7357/assets/vendor.js:56666:32)
    at Renderer.remove (http://localhost:7357/assets/vendor.js:25025:18)
    at Object.destroy (http://localhost:7357/assets/vendor.js:54237:21)
    at Class.destroy (http://localhost:7357/assets/vendor.js:53203:26)
    at Class.superWrapper [as destroy] (http://localhost:7357/assets/vendor.js:35186:22)
    at Object.run (http://localhost:7357/assets/vendor.js:10681:25)

This error mainly seems to occur in tests when components are being torn down.

Component definition:

import Ember from 'ember';

export default Ember.Component.extend({
  showWelcome: true,

  willDestroyElement() {
    Ember.run(() => {
      this.set('showWelcome', false);
    });
    this._super(...arguments);
  }
});

Component Template:

{{#if showWelcome}}
  Welcome!
{{/if}}

Interestingly enough, this error does not occur if you have an {{else}} case, like so:

{{#if showWelcome}}
  Welcome!
{{else}}
  Goodbye
{{/if}}

Prerequisites

You will need the following things properly installed on your computer.

Installation

  • git clone <repository-url> this repository
  • cd will-destroy-element-reproduction
  • npm install
  • bower install

Running / Development

Code Generators

Make use of the many generators for code, try ember help generate for more details

Running Tests

  • ember test
  • ember test --server

Building

  • ember build (development)
  • ember build --environment production (production)

Deploying

Specify what it takes to deploy your app.

Further Reading / Useful Links

will-destroy-element-reproduction's People

Contributors

ember-tomster avatar fivetanley avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.