Пример #1
0
 run(() => {
   obj.destroy();
   meta = peekMeta(obj);
   assert.ok(meta, 'meta is not destroyed immediately');
   assert.ok(get(obj, 'isDestroying'), 'object is marked as destroying immediately');
   assert.ok(!get(obj, 'isDestroyed'), 'object is not destroyed immediately');
 });
Пример #2
0
      ['@test does not observe primitive values'](assert) {
        let obj = {
          foo: { bar: 'STRING' },
        };

        addObserver(obj, 'foo.bar.baz', null, function() {});
        let meta = peekMeta(obj);
        assert.notOk(meta._object);
      }
Пример #3
0
  /**
    Destroys an object by setting the `isDestroyed` flag and removing its
    metadata, which effectively destroys observers and bindings.

    If you try to set a property on a destroyed object, an exception will be
    raised.

    Note that destruction is scheduled for the end of the run loop and does not
    happen immediately.  It will set an isDestroying flag immediately.

    @method destroy
    @return {EmberObject} receiver
    @public
  */
  destroy() {
    let m = peekMeta(this);
    if (m.isSourceDestroying()) {
      return;
    }

    m.setSourceDestroying();

    schedule('actions', this, this.willDestroy);
    schedule('destroy', this, this._scheduledDestroy, m);

    return this;
  }
Пример #4
0
    ['@test should schedule objects to be destroyed at the end of the run loop'](assert) {
      let obj = EmberObject.create();
      let meta;

      run(() => {
        obj.destroy();
        meta = peekMeta(obj);
        assert.ok(meta, 'meta is not destroyed immediately');
        assert.ok(get(obj, 'isDestroying'), 'object is marked as destroying immediately');
        assert.ok(!get(obj, 'isDestroyed'), 'object is not destroyed immediately');
      });

      meta = peekMeta(obj);
      assert.ok(get(obj, 'isDestroyed'), 'object is destroyed after run loop finishes');
    }
Пример #5
0
  /**
    Destruction scheduled flag. The `destroy()` method has been called.

    The object stays intact until the end of the run loop at which point
    the `isDestroyed` flag is set.

    @property isDestroying
    @default false
    @public
  */
  get isDestroying() {
    return peekMeta(this).isSourceDestroying();
  }