Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

231
Vistas
¿No se llama al método Init () cuando se procesa el componente?

Estoy tratando de migrar de la sintaxis clásica de Ember a una sintaxis más moderna, pero me cuesta entender por qué no se llama a mi método init() .

modelo:

 <HomeCard> {{#if this.loadThemeEditorDeepLink.lastSuccessful}} <PolarisBanner @status="critical" @action={{hash text="Turn on" onAction=(route-action "openUrl" this.themeEditorAppEmbedUrl) }} @secondaryAction={{hash text="Watch quick tutorial" onAction=(fn (mut this.showModal) true) }} /> {{/if}} </HomeCard> {{#if this.showModal}} <PolarisModal @onClose={{fn (mut this.showModal) false}} /> {{/if}}

contador de archivo de componente .js :

 import Component from '@glimmer/component'; import { inject as service } from '@ember/service'; import { dropTask } from 'ember-concurrency-decorators'; import { tracked } from '@glimmer/tracking'; export default class CheckComponent extends Component { @service ajax; @tracked themeEditorAppEmbedUrl = ''; showModal = false; @dropTask loadThemeEditorDeepLink = function* loadThemeEditorDeepLink() { let url = yield this.fetchThemeSettingsAppEmbedDeepLink(); this.themeEditorAppEmbedUrl = url; }; async fetchThemeSettingsAppEmbedDeepLink() { try { let result = await this.ajax.request( `apiUrl` ); return result.theme_editor_deep_link_url; } catch (err) { this.errorHandler.handle(err); } } init() { console.log('testing'); super.init(...arguments); this.loadThemeEditorDeepLink.perform(); } }

Incluso si mi componente se procesa correctamente, la llamada init() no ocurre, por lo que mi componente no funciona correctamente.

¿Alguna idea de lo que me podría estar perdiendo?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Los componentes glimmer no tienen un método init. En su mayoría son "clases básicas", por lo que querrá usar el constructor en su lugar.

 import Component from '@glimmer/component'; import { inject as service } from '@ember/service'; import { dropTask } from 'ember-concurrency-decorators'; import { tracked } from '@glimmer/tracking'; export default class CheckComponent extends Component { @service ajax; @tracked themeEditorAppEmbedUrl = ''; showModal = false; constructor(owner, args) { super(owner, args); this.loadThemeEditorDeepLink.perform(); } // ... }

para más información:

  • https://api.emberjs.com/ember/release/modules/@glimmer%2Fcomponent#constructor

esto también puede ser útil: https://ember-learn.github.io/ember-octane-vs-classic-cheat-sheet/

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda