Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

225
Views
¿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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!