knockout.js提供了一种将值绑定到bindingHandler中新创建的元素的方法
knockout.js is there a way to set value binding to newly created element in bindingHandler
我正在创建bindingHandler,它假设在元素内部创建label
和input
元素,并将新创建的输入值附加到viewModel中已经设置的observable。
但这比我想象的要棘手,我不知道如何传递observable,因为我尝试的任何东西要么抛出错误,要么将observable函数绑定为字符串,这不是我想要的。
所以我想知道如何才能达到这个结果?
目前我正在传递类似的值
data-bind="input: {placeholder: 'Username', value: username, class: 'input'}"
我知道我可以通过创建一个模板来获得类似的结果,但我想知道是否有这样的方法?这会给我更多的灵活性。
Knockout公开了一个函数ko.applyBindingsToNode
,它可以满足您的需要。创建input
元素后,您应该设置如下绑定:
ko.applyBindingsToNode(input, function() {
return {
value: valueAccessor().value
};
});
由于Knockout的3.0版本,您也可以使用此方法:
ko.applyBindingAccessorsToNode(input, {
value: function() {
return valueAccessor().value;
}
});
相关文章:
- 如何在bindingHandler内从ViewModel调用函数
- 如何在TinyMce的ko.bindingHandler中传递事件
- Knockout自定义bindingHandler不能在附加元素上应用bindings
- ko.bindingHandler issue with Durandal
- 在文本框中删除以逗号分隔的数字和相同条目的bindingHandler
- 将多个可观察对象绑定到一个自定义的bindingHandler
- knockout.js提供了一种将值绑定到bindingHandler中新创建的元素的方法
- 如何在Knockout JS中获得BindingHandler中的绑定表达式