Observer doesn't fire in component

Crabar

I have next code in a controller:

...
  selectedIngredientsIds: [],

  barItemsChanged: Ember.observer('user.barItems.[]', function() {
    let ingredients = [];
    if (this.get('user').get('barItems')) {
      ingredients = this.get('user').get('barItems').map(function(item) {
        return item.ingredientId;
      });
    }

    this.set('selectedIngredientsIds', ingredients);
  })
...

And template:

  {{ingredient-chooser
      multiple=false
      ingredients=ingredients
      changeIngredients="changeIngredients"
      needToClear=needToClear
      placeholder="Добавить в бар..."
      selectedIngredients=selectedIngredients
      selectedIngredientsIds=selectedIngredientsIds
      ingredientSelected="ingredientSelected" }}

And ingredient-chooser component:

...
  selectedIngredients: [],
  selectedIngredientsIds: [],

  selectedIngredientsChanged: Ember.observer('selectedIngredients.[]', function() {
    this.sendAction("changeIngredients", this.get('selectedIngredients'));
  }),

  selectedIngredientsIdsChanged: Ember.observer('selectedIngredientsIds.[]', function() {
    let self = this;
    let ingredients = this.get('selectedIngredientsIds').map(findIngredientByRealId);
    this.set('selectedIngredients', ingredients);
  })
...

barItemsChanged observer works fine. selectedIngredientsChanged also works fine. Even if I check selectedIngredientsIds property it shows correct value. But for some reasons selectedIngredientsIdsChanged observer never called.

What I'm doing wrong?

Crabar

I fixed the issues with next code:

Ember.run.scheduleOnce('afterRender', this, () => {
      this.set('selectedIngredientsIds', ingredients);
    });

instead of:

this.set('selectedIngredientsIds', ingredients);

I guess because user.barItems is part of model, barItemsChanged was called before components observers have been initialized.

Collected from the Internet

Please contact [email protected] to delete if infringement.

edited at
0

Comments

0 comments
Login to comment

Related

From Dev

Manually resizing an element doesn't fire a mutation observer in Chrome

From Dev

React doesn't fire function in component

From Dev

Rails 3: ActiveRecord observer: after_commit callback doesn't fire during tests, but after_save does fire

From Dev

Magento 1.9.2.1 - Observer: catalog_product_save_before doesn't fire

From Dev

Radopen Doesn't fire

From Dev

Onchange Doesn't Fire

From Dev

Observer subscribe doesn't load first time, not firing on first load to Component

From Dev

Basic animation doesn't fire

From Dev

ListView doesn't fire selectionchanged

From Dev

Mozfullscreenchange event doesn't fire

From Dev

WCF Callback doesn't fire

From Dev

JSF ActionListener doesn't fire

From Dev

photoswipe 1.0.11 - doesn't fire

From Dev

FileReferenceList doesn't fire events

From Dev

Basic animation doesn't fire

From Dev

jQuery event doesn't fire

From Dev

“hashchange” doesn't fire in Wordpress

From Dev

NUnit 3: OneTimeSetUp doesn't fire

From Dev

Why doesn't click event always fire?

From Dev

mac window load doesn't always fire

From Dev

Cordova - menubutton-event doesn't fire

From Dev

jQuery - Click function doesn't fire

From Dev

Loaded event doesn't fire in UserControl

From Dev

AngularJS Direcitve - link function doesn't fire

From Dev

extjs triggerfield doesn't fire blur

From Dev

Chrome breakpoint on radio doesn't fire

From Dev

Setting a hardwarebreakpoint in multithreaded application doesn't fire

From Dev

Click event doesn't fire in jquery

From Dev

ListView with Switch widget, onItemClick doesn't fire