2009-09-24 3 views
0

json 패킷이있는 경우 Microsoft Ajax를 사용하여 연락처 목록을 동적으로 채 웁니다. 다음과 같이Sys.UI.DataView 및 JavaScript 문제

function fillContactsFromData(contacts) { 
    // this is just for debug to let me know that the data is correct 
    if (contacts.length > 0) { 
     alert('ID: ' + contacts[0].ID + ', Name: ' + contacts[0].Name); 
    } 

    $create(Sys.UI.DataView, { data: contacts }, null, null, $get('contacts')); 
} 

연관된 HTML은 다음과 같습니다 :

<div id="contacts" class="sys-template"> 
    <a onclick="removeContact('{{ ID }}');"><img src="remove.png" /></a> 
    <a class="contact" rel="/Contacts/Index/{{ ID }}">{{ Name }}</a><br /> 
</div> 

첫 번째 < > 태그가 연락처를 제거하는 스크립트를 발사하는 데 사용되는 두 번째는 jQuery를 사용하는 반면, 다음과 같이 내 코드는 호버에 상자를 가져 오는 cluetip (세부 사항 생략).

내가 겪고있는 문제는 HTML이 올바르게 렌더링되지 않는다는 것입니다. 무엇 생성되는 것은 :

<div id="contacts"> 
    <a><img src="remove.png" /></a> 
    <a class="contact" rel="/Contacts/Index/{{ ID }}">Darren Oster</a><br /> 
</div> 

경고 상자가 유효한 ID (GUID가)와 이름 ("대런 오스터") 데이터를 나타냅니다. 이름이 올바르게 렌더링되고 있지만 ID 필드가 'rel'속성에 렌더링되지 않으며 'onclick'문이 완전히 제거됩니다.

MS Ajax의 제한 사항입니까? 아니면 잘못하고 있습니까?

미리 감사드립니다.

답변

1

속성이 {{}} 표현식을 포함하는 경우 전체 값이어야합니다.

예 : foo는 = "{{ 'ABC는'+ ID}}"

번호 : foo는 = "ABC {{ID}}"onclick을에 관해서는

생성되지 않고, 그것은 아마도 하지만, 당신이 사용하는 검사가 addAttribute()가 아닌 element.onclick의 직접 세트로 설정되기 때문에 값을 표시하지 않습니다.

0

InfinitiesLoop 그래서 여기에 내가 MS 아약스 4.0의 이전 미리보기를 사용했는데 ... 먼저

최종 대답 (경우 다른 사람이 경로를 따라), 바른 길에 나를 넣어. 나는 이제 5를 미리보기로 업데이트했고, 약간 다른 방식으로 작동합니다. 여기에 최종 HTML은의 (자바 스크립트는 변경되지 않습니다) : 그래서, 데이터 바인딩 된 값을 가지고있는 속성에 붙이면 내부

<option value="{{ Value }}">{{ Text }}</option> 

을 :

<div id="contacts" class="sys-template"> 
    <a sys:onclick="{{ 'removeContact(\'' + ID + '\');' }}"><img src="remove.png" /></a> 
    <a class="contact" sys:rel="{{ '/Contacts/Index/' + ID }}">{{ Name }}</a><br /> 
</div> 

이 또한 미리보기 (5)은 'SYS'을 요구주의 < 선택 >이

<option sys:value="{{ Value }}">{{ Text }}</option>