我正在进行自定义绑定,我的第一个版本要求数据绑定属性是一个可观察的,但我刚刚发布绑定的用户可能想要使用标准属性(如果他们不想在收到通知时价值已经改变了。)
为了支持这一点,我研究了如何实现值绑定,并使用
ko.jsonExpressionRewriting.writeValueToProperty
将值写入observables或标准属性。
这是一个内部ko命名空间,所以我不能从我的绑定中使用它,我该如何调用这个方法?
修改 我在github上有一个pull请求来解决这个问题 https://github.com/SteveSanderson/knockout/pull/806
答案 0 :(得分:4)
Knockout将函数放在allBindingsAccessor
的结果对象中,您可以使用该函数写入不可观察的模型值。
如果您的绑定被称为myBinding
,那么您的代码可能如下所示:
if (ko.isObservable(modelValue)) {
modelValue(valueToWrite);
}
else { //non-observable
allBindingsAccessor()._ko_property_writers.myBinding(valueToWrite);
}