Как загрузить рамочный ресурс из привязки углового свойства - PullRequest
0 голосов
/ 08 января 2019

Я пытаюсь загрузить OBJ-файл с моего бэкэнда и отобразить его с помощью A-Frame. Я могу заставить его загружать модель правильно, если я жестко запрограммирую URL в HTML следующим образом:

  <a-asset-item id="model-obj" src="http://localhost:8080/dashboard/portal/downloadObj/12b557b5-25d8-459c-b4ea-2bddce34c3af?token=eyJhbGciOiJSUz"></a-asset-item>

но мне действительно нужно построить его динамически с помощью Angular с чем-то вроде этого:

  <a-asset-item id="model-obj" [src]="srcUrl"></a-asset-item>

Но каждый раз, когда я это делаю, a-frame фактически не будет правильно выбирать атрибут src - возможно, потому что он не получает URL src во время выполнения. Я знаю, что получаю правильную строку, и уже пробовал это безрезультатно: A-Frame не загружает активы из Angular

Есть идеи, как я могу это сделать?

Ответы [ 3 ]

0 голосов
/ 14 июня 2019

Рабочее решение для задержки привязки данных Angular:

<a-asset-item
  *ngFor="let item of items; trackBy: trackItem"
  id="placeholder"
  src="placeholder.glb"
  [attr.id]="item?.id"
  [attr.src]="item?.uri">
</a-asset-item>

Проблема в том, что привязка данных происходит не сразу, и поэтому A-Frame выдаст ошибку, потому что src не предоставлено в этот момент времени.

0 голосов
/ 14 июня 2019

Вы можете подождать, пока элемент не получит src, используя * ngIf

Но вам нужно использовать контейнер, потому что * ngFor и * ngIf нельзя использовать для одного и того же элемента.

<a-container
`*ngFor="let item of items; trackBy: trackItem"`>
<a-asset-item
  *ngIf=“item && item.uri”
  id="placeholder"
  src="placeholder.glb"
  [attr.id]="item?.id"
  [attr.src]="item?.uri">
</a-asset-item>
<a-container>
0 голосов
/ 02 апреля 2019

Система управления активами не работает в Angular, но есть другой способ, который официально не рекомендуется. Загрузите свой актив за пределами системы управления активами. Документы: https://aframe.io/docs/0.9.0/primitives/a-gltf-model.html

См. Этот ответ в соответствующей теме: https://stackoverflow.com/a/55477602/1345116

...