3

我在 MeteorJS 项目中使用 Opal。

我正在尝试找出一种方法来Meteor.startup编写代码,但它似乎不起作用..

我认为这会起作用:

require 'native'

@Meteor = `Meteor`
@Meteor.startup do
  puts 'Go'
end

但事实并非如此。编译后的代码应如下所示:

Meteor.startup( function() {
  console.log( "GO" );
} );

在 JS 中将函数作为参数抛出是很正常的,我们如何在 Opal 中做到这一点?

4

2 回答 2

4

以下应该可以正常工作:

require 'native'

@Meteor = Native(`Meteor`)
@Meteor.startup -> {
  puts 'Go'
}

请注意,使用 Native 你传递一个 lambda 而不是一个块

于 2014-06-09T09:40:00.313 回答
1

您可以按照 Elia 的建议使用 Native(它在下面包装 JS 对象)或...

@Meteor = `Meteor`
@Meteor.JS.startup do
  puts 'Go'
end

像 compile 这样的调用X.JS.y直接到X.y(). 同样,您可以访问X.JS[:propname](编译为X.propname)之类的属性

于 2021-12-31T20:21:46.707 回答