Как преобразовать строку в объект jquery? - PullRequest
2 голосов
/ 02 февраля 2012

Я использую шаблон jquery для своего проекта. Проблема, с которой я сталкиваюсь, заключается в том, что при рендеринге шаблона я конвертирую $data в строку и передаю его в функцию onclick [см. Код ниже].

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

преобразование $data объекта в строку и передача его в функцию

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>

Так что, есть предложения?

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Хорошо, если вы хотите получить доступ к свойствам объекта данных, возможно, вам следует обратиться к ним:

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

Таким образом, вы получите свойство ID. Вы получаете «[объектный объект]», потому что это способ, который javascript использует для преобразования объекта в строку (вы получите то же самое, если вы вызовете alert($data);

Из вашего примера я бы ожидал, что мой код будет конвертирован в

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

потому что из вашего "Stringified" кода я вижу, что свойство ID из $data равно lc822

0 голосов
/ 02 февраля 2012

Это то, что вы хотите:

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

Надеюсь, это поможет.

...