use*_*471 2 javascript interop clojurescript
我想编写一个clojurescript函数,它返回一个复杂的项目,如["foo""bar"]或(list"foo""bar"),我希望能够从javascript调用此函数并获取部分的回报价值.怎么做到呢?在我的情况下,我正在返回的vector/list/collection中的项目数量是预先知道的,并且该集合应保持有序.
这是我的clojurescript功能.如果它让事情变得更容易,我可以在这里做些不同的事 只是不知道那会是什么.
(defn myFn [] ["foo" "bar"])
Run Code Online (Sandbox Code Playgroud)
这是它编译成javascript后的样子.该部分完全由前一位代码确定/生成.要在这里进行更改,我必须知道如何调整clojurescript中的上一部分.
my.ns.myFn = function myFn() {
return cljs.core.PersistentVector.fromArray(["foo", "bar"], true)
};
Run Code Online (Sandbox Code Playgroud)
当我在javascript中执行以下操作时,我会看到弹出一个警告框[[foo""bar"]
alert(my.ns.myFn());
Run Code Online (Sandbox Code Playgroud)
但是,如果我尝试以下操作,警报会显示"未定义"而不是"foo".
var tmp = my.ns.myFn();
alert(tmp[0]);
Run Code Online (Sandbox Code Playgroud)
我应该采取哪些不同的方式来获取显示"foo"的警报?(嗯.我想我可以编写更多的clojurescript来使用该值,看看在编译为javascript时它是如何出现的......)
在clojurescript中:
(ns foo.core)
(defn ^:export bar [x] (array 0 1 2))
在javascript中:
var result_array = foo.core.bar(x);
... result_array用作普通的javascript数组.
| 归档时间: |
|
| 查看次数: |
934 次 |
| 最近记录: |