我想从FFI函数定义中返回对Javascript对象的引用,以便稍后能够操作该对象:
import Data.Aeson
import Foreign.JavaScript (JSObject, NewJSObject, unsafeCreateJSObject)
import Foreign.RemotePtr (RemotePtr)
import Graphics.UI.Threepenny.Core hiding (text)
mkJSObject :: JSFunction NewJSObject -> UI JSObject
mkJSObject f = askWindow >>= liftIO . flip unsafeCreateJSObject f
polyLine :: [[Double]] -> Value -> UI JSObject
polyLine points = mkJSObject . f points
where
f :: [[Double]] -> Value -> JSFunction NewJSObject
f = ffi "L.polyline(%1, %2).addTo(map)"但是底层的Javascript窗口似乎不能公开访问。有没有其他方法可以创建对Javascript对象的引用?
发布于 2016-09-30 03:08:00
实际上要简单得多:只需从JSFunction返回一个JSObject,它就会被正确编组:
polyLine :: [[Double]] -> Value -> UI JSObject
polyLine points = callFunction . f points
where
f :: [[Double]] -> Value -> JSFunction JSObject
f = ffi "L.polyline(%1, %2).addTo(map)"https://stackoverflow.com/questions/39710155
复制相似问题