【发布时间】:2016-01-07 21:33:35
【问题描述】:
我需要获取绑定到自定义敲除绑定的敲除视图模型属性的实际名称。考虑以下自定义绑定设置...
HTML
<input type="text" data-bind="myInput: Name" />
Javascript
ko.bindingHandlers.myInput = {
init: function(element, valueAccessor, allBindingsAccessor, data, context) {
},
update: function(element, valueAccessor, allBindingsAccessor, data, context) {
}
};
var viewModel = {
Name: ko.observable('Knockout')
};
ko.applyBindings(viewModel);
在自定义绑定处理程序的更新函数的上下文中,我如何知道属性 Name 是正在访问的属性?我不是在寻找 Name 的值(我可以通过 valueAccessor 获得),而是在寻找属性名称本身。
【问题讨论】:
-
您需要将另一个参数传递给绑定处理程序。但这可能是XY Problem - 您希望通过知道名称来实现什么?绑定处理程序应该通过它的参数做所有事情,它不应该真正访问那些之外的视图模型。
-
我们有充分的理由需要知道这一点。我发布了一个非常简化的示例,以使问题保持清晰和简单。
-
在这种情况下,答案就是
data-bind="myInput: Name, myInputParameter: 'Name'",然后通过allBindingsAccessor得到它。 -
或者只是让
myInput取一个属性的名称并同时完成两者的工作。
标签: knockout.js