Assets only available to SCSS not JS

Hello,

For the last week or so I’ve been styling a Discourse setup for a brand which includes fixed fonts, logos and icons.

To begin with I noticed that any assets I imported (place in assets folder and import under the assets object of about.json) became immediately available to use as a SCSS variable but took a minute or two to show up in settings.theme_uploads.

Now however, they don’t show up at all in settings.theme_uploads which means I can’t use them in my JavaScript. If I remove an asset it also stays in the settings object. The SCSS usage stays unaffected.

Help would be greatly appreciated.

1 Mi Piace

Sì, anch’io sono un po’ confuso da questo.

Quando è sicuro usare un riferimento come return settings.theme_uploads.blah in javascript, se mai lo è?

Sto ottenendo “undefined” per settings.theme_uploads nella mia computed property (inizialmente almeno).

Qual è il pattern corretto qui?

1 Mi Piace

I dati di settings.theme_uploads sono stati aggiunti a javascript relativamente di recente (penso dopo che l’OP è stato scritto). Dovrebbe essere affidabile: lo usiamo nei nostri temi/componenti. Puoi spiegare più in dettaglio quali problemi stai riscontrando?

3 Mi Piace

Ah, mi mancava la cartella assets nel mio percorso all’asset, quindi il link interrotto avrà “ottimizzato” l’asset senza dubbio:

{
  "name": "Cool Theme Component",
  "about_url": "",
  "component": true,
  "assets": {
    "background": "background.png"
  }
}

avrebbe dovuto essere:

{
  "name": "Cool Theme Component",
  "about_url": "",
  "component": true,
  "assets": {
    "background": "assets/background.png"
  }
}

Doh!

Per tua informazione, sto facendo riferimento a questo in Javascript in un Ember Component, ad esempio:

  @computed
  backgroundImage() {
    return settings.theme_uploads.background;
  }

Questo genererebbe un errore undefined quando il percorso è errato!

Grazie per aver ascoltato! @david, mi dispiace aver sprecato il tuo tempo.

@hakonbja hai risolto il tuo problema?

2 Mi Piace