2013-12-10 3 views
2

applyBindingsToNode로 시작한 지 한개의 경고만으로도 효과가 있습니다. 기능이 작동하지 않는 것 같습니다.applyBindingsToNode를 사용하여 바인딩 된 요소에서 viewmodel 함수를 호출하지 못했습니다.

ko.applyBindingsToNode(newNode.get()[0], { 
     //template: { name: 'relationshipNode', data: ent }, 
     click: ent.select, //does not work 
     clickBubble: false, 
     event: { 
      contextmenu: ent.rightClick, //does not work 
      mouseover: ent.toggleHover, //does not work 
      mouseout: ent.toggleHover //does not work 
     }, 
     attr: { 
      'data-name': ent.name, //works 
      'data-type': ent.type //works 
     }, 
     css: { 
      selected: ent.selected, //works 
      hover: ent.hovered //works 
     }, 
     text: ent.name //works 
    }) 

여기서 예, 마우스 오버 기능 "엔티티"미정이기 때문에 오류가 발생

self.toggleHover = function (entity, event) { 
     entity.hovered(!entity.hovered()); 
    } 

이다.

이러한 모든 기능과 같이, 데이터 - 바인딩 속성 런타임시 생성 요소에 잘 작동 :

<div data-bind="click: select, clickBubble: false, event: { contextmenu: rightClick, mouseover: toggleHover, mouseout: toggleHover }, attr: {'data-name': name, 'data-type': type }, css: { selected: selected, hover: hovered }"></div> 

답변

2

ko.applyBindingsToNode (3.0 첨가 ko.applyBindingAccessorsToNode)가 결합 컨텍스트이다 셋째 인수 받아. 이 컨텍스트는 많은 바인딩 (이벤트/클릭, 템플릿, 제어 흐름 바인딩)에서 사용됩니다.

+0

이상한. "매개 변수"를 3 번째 매개 변수로 전달한 것만으로도 이제는 작동합니다. 감사. –

관련 문제