使用Aframe v0.5.0时,为什么DOM没有通过setAttribute更新?

时间:2017-06-04 07:25:45

标签: javascript aframe

我要设置 aframe-v0.5.0 <a-box>位置和颜色,并在浏览器中渲染正确,但是当我使用box.getAtrribute(& #34; position&#34;),它返回&#34; undefined&#34;,然后我发现<a-box> positon属性是在DOM中显示的空字符串(相同的缩放/旋转情况):

<a-box width="1" geometry="" height="1" depth="1" color="#0cf" material="" position="" rotation="" scale="" visible=""></a-box>

所以我切换回 aframe-v0.2.0 ,一切正常! 无法从谷歌获得任何答案,是否在aframe-v0.5.0中发生了变化? 以下是我的代码,aframe.js放在<head>中,我的脚本放在<body>

var body = document.body;
var scene = document.createElement("a-scene");
var camera = document.createElement("a-entity");
    camera.setAttribute("camera", "userHeight: 1.6");
    camera.setAttribute("look-controls", "");
    camera.setAttribute("wasd-controls", "");
var box = document.createElement("a-box");
    box.setAttribute("width", 1);
    box.setAttribute("height", 1);
    box.setAttribute("depth", 1);
    box.setAttribute("color", "#0cf");
    box.setAttribute("position", "0 0 -5");
scene.appendChild(camera);
scene.appendChild(box);
body.appendChild(scene);

console.log( box.getAttribute("position") ) //"undefined"

这里的例子: http://minicg.com/demo/aframe050_test/

2 个答案:

答案 0 :(得分:1)

我不确定我是否正确,但在我看来,您尝试在将其正确放置在场景之前阅读该属性。当我在R.__来电之前添加2s setTimeout()时,它可以正常工作:
https://codepen.io/gftruj/pen/JJoENb
但是在阅读属性之前等待2秒是令人发指的!
是的,这就是为什么我建议将你的代码放在注册组件中。您可以在init()函数中添加任何js代码,并且您应确保所有内容都已正确加载。
例如,手动创建getAttribute()元素,并将代码放入

<a-scene myCode>

答案 1 :(得分:1)

https://aframe.io/docs/0.5.0/introduction/faq.html#why-is-the-html-not-updating-when-i-check-the-browser-inspector

  

如果您打开浏览器的开发者工具,您会看到HTML属性值为空。

     

为了提高性能,A-Frame不会更新HTML以保存字符串化操作。如果需要同步到DOM,请使用调试组件或.flushToDOM方法。