javascript - XML3D、document.createElementNS 和 Meteor

标签 javascript node.js meteor 3d xml3d

我将此问题发布到 Meteor-Talk Google 群组,但我认为这是一个晦涩的问题,需要信号增强。

我正在尝试创建一个插件,让您可以将 XML 样式元素添加到 HTML 文档中,就像 HTML5 一样,与 XML3D 一起使用。 。我认为使用 Blaze 模板和 XML3D 响应式渲染 3D 内容真的很棒。

我需要使用 document.createElementNS 方法将元素添加到 DOM,以便将它们添加到 SVG 之外的替代命名空间下,以便试验替代规范。

不幸的是,Meteor 仅支持 SVG 命名空间的该方法,如以下代码所示: https://github.com/meteor/meteor/blob/a81fbf483efa4f40ea2d382f0c7275d408536e96/packages/blaze/materializer.js#L41

我考虑了两种不同的方法来做到这一点。我可以创建一个模板 block 助手,如下所示:

空格键:

{{#xml ns="http://www.xml3d.org/2009/xml3d"}}
  <xml3d>...</xml3d>

Jade :

+xml(ns='http://www.xml3d.org/2009/xml3d')
  xml3d ...

那部分很简单,但我如何使用正确的命名空间, react 性地向 Blaze 以及最终的 DOM 传递渲染的内容?

或者,我可以尝试以某种方式扩展 Blaze 以支持替代 namespace ,也许可以使用包。我也不知道如何准确地做到这一点,因为我不认为包可以扩展 Blaze。我确实看到了 BlazeTools,也许这会有所帮助?关于它所做的事情的文档相当稀疏,并且代码实际做了什么并不是立即显而易见的。

或者可能是这两种方法的某种组合,例如,使用 block 助手向 Blaze 发送 XML 命名空间信号,以呈现 block 助手的内容。

想法?

最佳答案

所以,我并不完全肯定这是 Meteor 的问题。

一旦我运行 XML3D 初始化代码,Meteor 似乎就能足够有效地添加我的元素。一旦 XML3D 正确初始化,我就可以做很多事情,包括使用响应式(Reactive)模板。

我必须在我的路由 Controller 中将这段代码一起破解,但是......

Template.{insert-your-template-name-here}.rendered = ->
  window.initXML3DElement $('xml3d')[0]
  setTimeout ->
    $('canvas').attr
      width: 600
      height: 600
    $('canvas').parent().css
      display: 'block'
  , 1000

我希望这对将来遇到这个问题的人有所帮助。欢迎其他评论和支持,但我对目前所拥有的感到非常满意。

我将很快编写一个有助于解决此问题的包,并将其上传到 Atmosphere。

关于javascript - XML3D、document.createElementNS 和 Meteor,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26771987/

相关文章:

javascript - 如何构建 Meteor 应用程序并加载到 Meteor shell 中

javascript - 在 nodejs 中解析 Watson TTS HTTP 响应

javascript - 使 continue 语句在 do while 循环中工作

javascript - 来自 ReactJs 的 POST 请求

javascript - MongoDB。如何在 node.js 中执行存储函数?

javascript - Meteor 将 id 传递到链接中

javascript - ajax 加载后,网站在 Chrome 中切换全屏模式

javascript - 当您在 Chrome 上删除数据库时,indexedDB 不会重置版本——错误或用户错误?

javascript - 如何在没有任何副作用的情况下更新 package-lock.json 中的单个依赖项?

debugging - meteor 服务器端断点从未在cloud9中命中