writeValueToProperty不可用

时间:2012-08-31 15:54:53

标签: knockout.js

我正在进行自定义绑定,我的第一个版本要求数据绑定属性是一个可观察的,但我刚刚发布绑定的用户可能想要使用标准属性(如果他们不想在收到通知时价值已经改变了。)

为了支持这一点,我研究了如何实现值绑定,并使用

ko.jsonExpressionRewriting.writeValueToProperty

将值写入observables或标准属性。

这是一个内部ko命名空间,所以我不能从我的绑定中使用它,我该如何调用这个方法?

修改 我在github上有一个pull请求来解决这个问题 https://github.com/SteveSanderson/knockout/pull/806

1 个答案:

答案 0 :(得分:4)

Knockout将函数放在allBindingsAccessor的结果对象中,您可以使用该函数写入不可观察的模型值。

如果您的绑定被称为myBinding,那么您的代码可能如下所示:

        if (ko.isObservable(modelValue)) {
            modelValue(valueToWrite);
        }                
        else { //non-observable
           allBindingsAccessor()._ko_property_writers.myBinding(valueToWrite);   
        }