Aframe + Meteor - добавление условного пользовательского компонента к объекту - PullRequest
0 голосов
/ 09 мая 2019
<a-gltf-model id='playerone' {{#if myplayer playerone}}entitymove{{/if}} src="#myMixBun"> </a-gltf-model>

Используя Aframe в Meteor, я хочу добавить пользовательский компонент «entitymove», если значение myplayer равно «playerone».

Значение {{myplayer}} равно “playerone” в main.html, поэтому переменная установлена ​​правильно. Но я получаю ошибку Метеор “A template tag of type BLOCKOPEN is not allowed here”.

Если бы, например, «entitymove» был «классом», думаю, я мог бы решить это следующим образом:

<a-gltf-model id='playerone' class={{#if myplayer playerone}}entitymove{{/if}}  src="#myMixBun"> </a-gltf-model>

Но поскольку это компонент, я не знаю, как исправить синтаксис.

Ответы [ 2 ]

0 голосов
/ 11 мая 2019

решено Это мой оригинал, который не работает.

В main.js:

player = "player not active";

Template.hello.helpers(
  counter() {......

// if player one
player = "playerone";
// if player two
player = "playertwo";

return { myplayer: player };
  }

В main.html:

// This statement works
{{counter.myplayer}}....

<a-gltf-model id='playerone' class="{{#if counter.myplayer playerone}}entitymove{{/if}}"  src="#myMixBun"> </a-gltf-model>

<a-gltf-model id='playertwo' class="{{#if counter.myplayer playertwo}}entitymove{{/if}}"  src="#myMixBun"> </a-gltf-model>

Iдумаю, что с этим есть 2 проблемы:

1) пробелам не нравится оператор if со сравнением?:

{{#if counter.myplayer playertwo}}

Он допускает только операторы true или false, если?например:

{{#if counter.player1}}

2) Мой пользовательский компонент в рамке фактически не является классом, поэтому я не могу поместить оператор meteor #if внутри сущности.

Я изменил кодк следующему, и теперь это работает:

Изменен main.js на:

playerone ="";
playertwo ="";

// if player one
     playerone = "true";
    playertwo = "";

// if player two
     playerone = "";
    playertwo = "true";
 return { player1: playerone, player2: playertwo};
  }

Изменен main.html на:

// These statements work
{{#if counter.player1}}player1 is true{{/if}}
{{#if counter.player2}}player2 is true{{/if}}....

{{#if counter.player1}}
 <a-gltf-model id='playerone' entitymove   src="#myMixBun" ></a-gltf-model> 
 <a-gltf-model id='playertwo'   src="#myMixBun" ></a-gltf-model> 
 {{/if}}

  {{#if counter.player2}}
 <a-gltf-model id='playerone'  src="#myMixBun" ></a-gltf-model> 
 <a-gltf-model id='playertwo' entitymove   src="#myMixBun" ></a-gltf-model> 
 {{/if}}
0 голосов
/ 09 мая 2019

Предполагая, что для этого используются шаблоны Meteor-Blaze, вам необходимо включить условия для атрибутов элементов DOM в кавычки / двойные кавычки:

<a-gltf-model id='playerone' class="{{#if myplayer playerone}}entitymove{{/if}}"  src="#myMixBun"> </a-gltf-model>

Показания:

http://blazejs.org/guide/spacebars.html

...