2013-12-10 37 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(和ko.applyBindingAccessorsToNode在3.0加)採取在作爲綁定上下文第三參數。這個上下文被許多綁定(事件/點擊,模板,控制流綁定)使用。

+0

奇怪。剛剛通過「ent」作爲第三個參數,果然,現在可以工作。謝謝。 –