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

ええ、私も少し混乱しています。

settings.theme_uploads.blah のような参照を JavaScript で安全に使用できるのはいつですか?(もし可能なら)

計算プロパティで settings.theme_uploads が「未定義」になっています(少なくとも最初は)。

ここで正しいパターンは何ですか?

「いいね!」 1

settings.theme_uploads データは、(投稿者が書いた後、おそらく) 比較的最近 JavaScript に追加されました。これは、私たち自身のテーマ/コンポーネントでも使用しているため、信頼できるはずです。どのような問題が発生しているか、詳しく説明していただけますか?

「いいね!」 3

パスにアセットフォルダがなかったため、リンク切れが発生し、アセットが「最適化」されたのでしょう。

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

は、以下のようになっているべきでした。

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

しまった!

参考までに、EmberコンポーネントのJavaScriptで参照しています。例:

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

パスが間違っているとundefinedエラーが発生します!

聞いてくれてありがとう! @david、時間を無駄にしてすみません。

@hakonbja、問題は解決しましたか?

「いいね!」 2