2012-02-02 75 views
2

我正在爲我的項目使用jquery模板。我面臨的問題是,在渲染模板時,我將$data轉換爲字符串並將其傳遞給onclick函數[請參閱下面的代碼]。 $data對象的如何將字符串轉換爲jquery對象?

<script id="Item" type="text/x-jquery-tmpl"> 
    <li id="${ID}" class="card red ui-state-default"> 
     <a class="desc" href="" onclick="return $$.popup.eItem('${($data)}');"> ${$data.Desc} </a> 
    </li> 
</script> 

轉換爲字符串,並把它傳遞給函數

onclick="return $$.popup.eItem('${($data)}');" 

這裏,$data是包含實際數據的對象。當我點擊鏈接時,我得到傳遞的字符串爲"[object Object]",我想再次將其轉換回jquery對象,以便我可以在我的代碼中使用它。

我可以用 'JSON.stringify()' 到$data對象JSON轉換,這樣

onclick="return $$.popup.editCard('${JSON.stringify($data)}');" 

但作爲模板被渲染爲HTML,這是輸出:

<a class="desc" href="" onclick="return $$.popup.eItem('{&quot;TemplateName&quot;:&quot;CardItem&quot;,&quot;ID&quot;:&quot;lc822&quot;,&quot;Desc&quot;:&quot;make card EntityAssignId = 0&quot;,&quot;CardId&quot;:822,&quot;LaneId&quot;:665,&quot;Priority&quot;:1,&quot;AssignedEntityId&quot;:0,&quot;Pic&quot;:null,&quot;SortOrder&quot;:2}');">make card EntityAssignId = 0</a> 

那麼有什麼建議?

+0

你試過嗎?$(數據) – Christian 2012-02-02 10:42:57

+0

燁我做到了,但當時並沒有呈現模板... – 2012-02-02 10:44:28

+0

我不確定我是否真的瞭解你的問題stion,但你有沒有試過'$(document.createTextNode(...))'? – hippietrail 2012-10-17 10:06:00

回答

1

那麼如果你要訪問的數據對象的屬性也許你應該訪問它們:

onclick="return $$.popup.eItem('${($data.ID)}');" 

這樣你會得到的ID屬性。你拿「的翻譯:」因爲這是JavaScript使用一個對象轉換蒂奧字符串的方式(你會得到相同的,如果你叫alert($data);

從你expample我希望我的代碼轉換爲

<a class="desc" href="" onclick="return $$.popup.eItem('lc822');">make card EntityAssignId = 0</a> 

因爲你的「字符串化」的代碼,我可以看到屬性的$dataID等於lc822

+0

我知道我可以做到這一點,但我想傳遞整個對象,所以我可以直接分配值,而不是進行數據庫調用並從中獲取其餘數據......但如果我沒有其他選項我會通過ID並進行數據庫調用以獲取相關數據... – 2012-02-02 12:55:00

0

這是你想要什麼:

console.log($('<div>').append($data).remove().html()); 

希望這有助於。