我将此发布到 Meteor-Talk Google Group,但我认为这是一个如此晦涩难懂的问题,需要增强信号。
我正在尝试创建一个插件,让您可以将 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
我考虑了两种不同的方法来做到这一点。我可以创建一个模板块助手,如下所示:
在空格键中:
{{#xml ns="http://www.xml3d.org/2009/xml3d"}}
<xml3d>...</xml3d>
在翡翠:
+xml(ns='http://www.xml3d.org/2009/xml3d')
xml3d ...
这部分很简单,但我如何使用正确的命名空间将渲染的内容传递给 Blaze——最终是 DOM——呈现的内容?
或者,我可以尝试扩展 Blaze 以以某种方式支持替代名称空间,也许通过使用包。我也不确定如何做到这一点,因为我不认为一个包可以扩展 Blaze。我确实看到了 BlazeTools,也许这会有所帮助?关于这样做的文档相当稀少,代码实际做了什么也不是很明显。
或者可能是这两种方法的某种组合,例如,使用块助手向 Blaze 发出 XML 名称空间的信号,以呈现块助手的内容。
想法?