Ваши последние изменения наконец позволили мне запустить проект. Исследуя вашу проблему, я обнаружил похожую проблему
Насколько я могу судить, она не имеет ничего общего с d3 или jquery и имеет отношение к добавлению индексированный набор перед добавлением координаты с использованием функций DOM, которые влияют как на d3, так и на jquery. Добавление координаты к индексированному набору, а затем добавление индексированного набора к остальной части DOM должно работать нормально.
Другой комментатор отметил
Для меня узел еще не существует, так как я создаю DOM из JSON. Решением было сначала создать дочерний узел, затем добавить его к родительскому, а затем добавить родительский. До этого код имел значение d ie в appendChild.
Уровень рендеринга Ember сильно изменился с Ember 1.x -> Ember 3.x. Мне кажется, что изменение порядка, в котором узлы создаются / добавляются в DOM, вызвало эту проблему для вас, так как x3dom ожидает один заказ и вызывает другой.
Первое быстрое решение вашей текущей проблемы - избежать включения <transform>
элементов в блоки {{#if}}
для скрытия / отображения, поскольку это удаляет / считывает DOM таким образом, что x3dom
не распознается из. Скорее, управляйте видимостью с помощью свойства x3dom
render
<transform render="{{if this.display "true" "false"}}">
<shape def="" ispickable="0" bboxsize="-1,-1,-1" bboxcenter="0,0,0" render="true">
<appearance sorttype="auto" alphaclipthreshold="0.1">
<material specularcolor="0,0,0" shininess="0.2" emissivecolor="0,0,0" ambientintensity="0.2" transparency="0.5" diffusecolor="0 0 1">
</material>
</appearance>
<indexedfaceset ccw="true" colorpervertex="false" colorindex=" 0 0 0 0" coordindex="0 1 2 3 0" solid="true" usegeocache="true" lit="true" normalpervertex="true" normalupdatemode="fast" convex="true" >
<coordinate point="-2 -2 0, 0 -2 0, 0 0 0, -2 0 0"></coordinate>
<color color="0 0 1"></color>
</indexedfaceset>
</shape>
</transform>
В качестве альтернативы вам также нужно избегать переноса <transform>
в {{#if}}
и использовать x3dom
API напрямую через javascript в @action
.