2013-04-02 3 views
1

을 클릭 자바 스크립트에서 클릭하는 것은 우리가 내가KnockoutJS의 데이터 바인딩은 :

document.getElementsById('anchor').click(); 

경고 트리거를 할 수 있지만, $ root.save하지 않는 경우에 우리가 너무

<table> 
    <tbody data-bind="foreach: orderItems"> 
     <tr class='datarow'> 
      <td data-bind="text: whatever"></td> 
      <td><a id='anchor' href='#' data-bind='click: $root.save' onclick='alert("a");'>Text</a></td> 
     </tr> 
    </tbody> 
</table> 

때문에 테이블이 있다고 가정 해 봅시다 . 어떤 아이디어?

+0

에 모습을 가질 수있는 요소에 대해 바인딩에 사용할 수 있던 데이터를 반환 ? http://jsfiddle.net/rniemeyer/kAA4v/ –

+0

'applyBindings'를 호출하는 것을 잊었습니까? – Tyrsius

+0

루트 대신 $ parent 또는 $ data가 필요합니까? – segFault

답변

1

나는 코드로이 문제를보고 있어요 :

  1. getElementsById -이 방법이 존재 확신?

각 ID는 페이지에 한 번만 존재해야합니다. ID로 요소를 찾으려면 getElementById (단수)를 호출하면 요소가 반환됩니다. 하나의 요소에만 주어진 ID가 있어야하기 때문에 getElementsById (plural) 메소드가 없습니다.

하드 코딩 된 '앵커'ID와 결합 된 foreach 바인딩은 앵커 ID가 여러 개인 요소가됩니다. 이것은 아니오입니다. 아마 'anchor'라는 ID 대신 'anchor'라는 클래스를 사용하십시오.

<a class='anchor' href='#' data-bind='click: $root.save' onclick='alert("a");'>Text</a> 

내 생각에 getElementsById는 클릭 할 항목을 반환하지 않습니다.

  1. 클릭()는 다시 getElementsById에서 요소를 얻을 수있다하더라도

, 이러한 요소에는 클릭() 메소드가 없다.

다른 방법으로 jQuery를 사용하여 요소를 가져올 수 있으며 jQuery 객체를 사용하여 click() 메소드를 호출 할 수 있습니다. 또는 getElementById에서 반환 된 요소를 jQuery로 래핑 한 다음 click()을 호출 할 수 있습니다. http://jsfiddle.net/tlarson/t4yZL/1/

2
Try This 

<script type="text/javascript"> 
    var viewModel = { 

     Save: function() { 

      alret("Hello"); 
     } 
    }; 
ko.applyBindings(new MyViewModel()); 
</script> 
<table> 
    <tbody data-bind="foreach: orderItems"> 
     <tr class='datarow'> 
      <td data-bind="text: whatever"></td> 
      <td><a id='anchor' href='#' data-bind='click: $root.save' onclick='alert("a");'>Text</a></td> 
     </tr> 
    </tbody> 
</table> 
0
<table> 
    <tbody data-bind="foreach: orderItems"> 
     <tr class='datarow'> 
      <td data-bind="text: whatever"></td> 
      <td><a id='anchor' href='#' onclick='alert("a"); viewModel.save(ko.dataFor(this));'>Text</a></td> 
     </tr> 
    </tbody> 
</table> 
  • 당신이 다른 곳의 ViewModel을 저장한다고 가정 여기

    $('.anchor').click(); 
    

    은 작업 예입니다.

  • ko.dataFor (요소) - 당신이 문제에보고하는 특정 브라우저가 있습니다

당신이 link

관련 문제