我知道数据和事件是通过敲除绑定的每个函数调用传递的,但有没有办法传回重点关注元素的父元素的数据?我知道这是不对的,但有点像这样。
data-bind="event: {
focus: function() { $root.addAllocation($parent-DOM-element.$data)}
}"
答案 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的精神。更好的是嵌套你的视图模型,让他们互相访问(父母知道孩子,反之亦然)。