2013-07-08 4 views
4

나는 녹아웃을 사용하여 HTML 바인딩을 사용하여 페이지의 일부분으로 내용을 동적으로로드하고 있습니다.knockout html 바인딩 내부에서 다른 바인딩으로

문제는 내가 바인딩하려는 html은 onclick 함수를 호출해야하고 녹아웃이 쉽게 보내는 데이터에 대한 정보가 필요하다는 것입니다. 이 같은

뭔가 :

myFunction($parent, $data) 

HTML :

rowValue("<a href='#' data-bind=click:alert('hello')" + result.Data + "</a>"); 

fiddle here을 확인하시기 바랍니다 :

<table> 
    <tbody data-bind="foreach: rows" > 
     <tr> 
      <td data-bind="html: rowValue">this will be a link</td> 
     </tr> 
    </tbody> 
</table> 

나중에 나는 녹아웃 내부 바인딩 링크로 값을 설정 전체 작업 코드를 볼 수 있습니다.

제가 작성한 2 줄의 차이점을 볼 수 있습니다. javascript onclick을 사용하면 효과가 있지만, 후기 바인딩이 누락되었습니다.

나는 이것에 관해 많은 질문을 보았지만 확실한 대답으로 찾을 수는 없습니다.

KO로이 작업을 수행하고 싶습니다. 어떻게 수행 할 수 있습니까? 템플릿이있는 일 가능성이 있습니까?

답변

3

KO는 ko.applyBindings를 호출 할 때 바인딩을 적용합니다. 그러면 applyBindings가 호출 된 후 dom을 수정하면됩니다. KO는 새로운 DOM 요소를 인식하지 못합니다. 마우리 치오에 의해

<table> 
    <tbody data-bind="foreach: sitesTable.rows" > 
     <tr data-bind="foreach: row"> 
      <td data-bind="template: 'myTemplate' "></td> 
     </tr> 
    </tbody> 
</table> 

<br/> 


<a href="#" onclick="getNewData()"> click here </a> 
<script id="myTemplate" type="text/html"> 
    <a href='#' data-bind="html: cellValue, click: openAlert"> click </a> 
</script> 

편집 :

당신은 템플릿이 방법을 사용할 수 있습니다. 이 피들을 다른 링크가 깨질 때 사용하십시오 : See fiddle

+0

내 코드의 템플릿 변환에 감사드립니다. 템플릿이 내가 필요한 것을 성취해야 하는가? 당신의 바이올린이 그것을하지 않기 때문에. 나는 그것을 작동하도록 수정했지만 여전히 템플릿의 데이터 바인딩은 무시되고있는 것처럼 보입니다. –

+0

실제로 당신의 바이올린을 수정했습니다 : http://jsfiddle.net/MaurizioPiccini/QfLxM/13/ 코드를 업데이트 할 수 있다면 다른 사람들이 볼 수 있도록 귀하의 답변을 수락합니다. –

+0

이것이 도움이되었다고 들었습니다. – Damien

관련 문제