我正在尝试为Comet回调生成一些Javascript。我工作的代码,但需要使用几个不应该真正需要的其他变量。问题是我不知道如何访问从Call返回的数组中的元素。
JsCrVar("node" + c.id, Call("dataTable.fnAddData",
JsArray(Text(c.name),
Text(c.initials),
makeDeleteButton(c)),
Num(0))) &
JsCrVar("row" + c.id, Call("dataTable.fnGetNodes", JsVar("node" + c.id + "[0]"))) &
SetExp(JsVar("row" + c.id + ".id"), Str(c.id.toString))
这会生成如下的JavaScript(为了便于阅读而缩进):
var node2 = dataTable.fnAddData(["Test User",
"TU",
"<button onclick=\"liftAjax.lift_ajaxHandler("F306228675550KFT=true", null, null, null); return false;\">delete</button>"]
,0);
var row2 = dataTable.fnGetNodes(node2[0]);
row2.id = "2";
我想生成的代码如下:
dataTable.fnGetNodes(dataTable.fnAddData(["Test User",
"TU",
"<button onclick=\"liftAjax.lift_ajaxHandler("F306228675550KFT=true", null, null, null); return false;\">delete</button>"]
,0)[0]).id = "2";
如何
0
元素?答案 0 :(得分:2)
我认为你必须创建自己的自定义类来返回从Call返回的数组的第n个成员。尝试这样的事情:
case class JsRetArray(array: JsExp, n: Int) extends JsExp {
def toJsCmd = array.toJsCmd + "[" + n + "]"
}
然后你可以这样做:
Call("dataTable.fnGetNodes",
JsRetArray(Call("dataTable.fnAddData",
JsArray(Text(c.name),
Text(c.initials),
makeDeleteButton(c)),
Num(0)),
0)
) ~> Id === 2
,当使用.toJsCmd
调用时,产生:
dataTable.fnGetNodes(dataTable.fnAddData(["Test User",
"TU",
"<button onclick=\"liftAjax.lift_ajaxHandler("F306228675550KFT=true", null, null, null); return false;\">delete</button>"]
,0)[0]).id = 2