我将此发布到Meteor-Talk Google Group,但我认为这是一个非常模糊的问题,需要提升信号。
我正在尝试创建一个插件,让您可以将HTML样式元素添加到HTML文档中,就像使用HTML5一样,可以与XML3D一起使用。我认为用Blaze模板和XML3D反复渲染3D内容真的很棒。
我需要使用document.createElementNS方法向DOM添加元素,以便在SVG的替代命名空间下添加它们,以便尝试替代规范。
不幸的是,根据以下代码,Meteor仅支持SVG命名空间的方法: https://github.com/meteor/meteor/blob/a81fbf483efa4f40ea2d382f0c7275d408536e96/packages/blaze/materializer.js#L41
我考虑过两种不同的做法。我可以创建一个模板块帮助器,如下所示:
在Spacebars中:
{{#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命名空间发出信号,以呈现块助手的内容。思想?
答案 0 :(得分:0)
所以,我并不完全肯定这毕竟是Meteor的一个问题。
一旦我运行XML3D初始化代码,Meteor似乎就足以有效地添加我的元素。一旦XML3D正确初始化,我就可以做很多事情,包括使用反应性模板。我不得不在我的路由控制器中一起破解这段代码,但是......
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。