如何使用子绑定上的敲除绑定传回父DOM元素的数据?

时间:2014-05-11 16:47:28

标签: javascript events knockout.js

我知道数据和事件是通过敲除绑定的每个函数调用传递的,但有没有办法传回重点关注元素的父元素的数据?我知道这是不对的,但有点像这样。

data-bind="event: { 
              focus: function() { $root.addAllocation($parent-DOM-element.$data)}
           }"

1 个答案:

答案 0 :(得分:0)

event binding documentation有答案。它假设像下面的代码:

<input data-bind="event: { focus: myFunction }" />

这个Javascript:

var viewModel = {
    myFunction: function(data, event) {
        console.log(event); // Check out the props for this one.
        alert('see console log');
    }
};
ko.applyBindings(viewModel);

event参数是来自focus事件的常规事件,并且具有-amongst其他 - 一个target属性,其中包含对DOM的引用。从那里你可以使用vanilla JS或你最喜欢的JS库来遍历DOM以找到父和其他东西。

如果您愿意,可以使用KO methods to get dataFor元素。

请注意,这种做法违背了Knockout的精神。更好的是嵌套你的视图模型,让他们互相访问(父母知道孩子,反之亦然)。