试图让react.rb模板使用opal-jquery在蛋白石中渲染,现在正在工作它不是

时间:2015-08-18 10:23:06

标签: jquery ruby opalrb react.rb

我承认这与我之前的一个问题相似,但它并不完全相同。 由于我最终使用了ajax请求,所以我决定将opal-jquery添加到我的堆栈中(除非你知道一种更简单的方法)并切换到使用它提供的Document.ready?函数。

我的功能现在看起来像这样:

def render_component component,mount_point
   React.render React.create_element(component), Element.find[mount_point][0]
end

我称之为:

Document.ready? do
    render_component LoginForm, '#view_port'
end

问题是,在此工作之前,现在,它不是,我收到Uncaught NoMethodError: undefined method '[]' for nil错误,它正在工作,然后它突然开始这样做。

错误是因为某些原因Element.find[mount_point]正在返回nil并且我不知道原因。它应该在加载dom后运行,因此挂载点'#view_port'应该存在;它绝对存在于dom中,你可以在这里看到:

<body>
  <section id="main">
    <section id="view_port">  
    </section>
  </section>

<div class="hiddendiv common"></div>
</body>

我甚至尝试将其包裹在window.addEventListener("load", function () {}中但不起作用。

为什么现在不工作?我错过了什么?

1 个答案:

答案 0 :(得分:0)

好的,问题是Element['#view_port']函数中的render_componentDocument.ready?之前被调用,因此返回nil。为什么这是我不知道,它应该工作,但它不是,所以你去。

值得一提的另一个问题(稍微相关)是尝试Element['#view_port'][0]来获取本机对象会导致错误Uncaught TypeError: b.toLowerCase is not a function,因此您无法使用Jquery来获取本机dom元素,这意味着你坚持使用document.getElementById('view_port')