2011-01-20 2 views
2

Comet 콜백에 대한 일부 Javascript를 생성하려고합니다. 내가 가지고있는 코드는 꼭 필요하지는 않지만 몇 가지 추가 변수를 사용해야합니다. 문제는 Call에서 반환 된 배열의 요소에 액세스하는 방법을 잘 모르겠다는 것입니다.리프트 호출에서 반환 된 배열에 액세스하는 방법

var node2 = dataTable.fnAddData(["Test User", 
           "TU", 
           "<button onclick=\"liftAjax.lift_ajaxHandler(&quot;F306228675550KFT=true&quot;, null, null, null); return false;\">delete</button>"] 
           ,0); 
var row2 = dataTable.fnGetNodes(node2[0]); 
row2.id = "2"; 

다음과 내가 생성하고자하는 코드가 될 때 :

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)) 

이 자바 스크립트 (가독성을 위해 들여 쓰기) 다음과 같이 생성

dataTable.fnGetNodes(dataTable.fnAddData(["Test User", 
           "TU", 
           "<button onclick=\"liftAjax.lift_ajaxHandler(&quot;F306228675550KFT=true&quot;, null, null, null); return false;\">delete</button>"] 
           ,0)[0]).id = "2"; 

어떻게 하나

  1. 0 반환 된 배열에서 th 요소?
  2. 반환 된 객체에서 하위 요소 'id'를 가져 옵니까?

답변

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(&quot;F306228675550KFT=true&quot;, null, null, null); return false;\">delete</button>"] 
        ,0)[0]).id = 2 
+0

내가 생각하는 그 첫 번째 'dataTable.fnAddData' 'dataTable.fnGetNodes'여야합니까? –

+0

맞음! 캐치 주셔서 감사합니다! – Aaron

+0

그리고 받아 들여! 통찰력에 감사드립니다! –