我正在创建bindingHandler,它假设在元素内部创建label
和input
元素,并将新创建的输入值附加到已在viewModel中设置的observable。
但这比我想象的要复杂,我无法弄清楚如何传递observable,因为我尝试的任何东西都会抛出错误或将可观察函数绑定为字符串,这不是我想要的。
所以我想知道如何才能达到这个结果?
目前我正在传递像这样的值
data-bind="input: {placeholder: 'Username', value: username, class: 'input'}"
我知道我可以通过创建模板来获得类似的结果,但我想知道是否有这样的方法?它会给我更大的灵活性。
答案 0 :(得分:1)
Knockout公开了一个能够满足你需要的函数ko.applyBindingsToNode
。创建input
元素后,您应该像这样设置绑定:
ko.applyBindingsToNode(input, function() {
return {
value: valueAccessor().value
};
});
从Knockout 3.0版开始,您也可以使用此方法:
ko.applyBindingAccessorsToNode(input, {
value: function() {
return valueAccessor().value;
}
});