1

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

为了支持这一点,我查看了值绑定是如何实现的,它使用

ko.jsonExpressionRewriting.writeValueToProperty

将值写入可观察对象或标准属性。

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

编辑: 我在 github 有一个拉取请求来解决这个问题 https://github.com/SteveSanderson/knockout/pull/806

4

1 回答 1

4

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

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

        if (ko.isObservable(modelValue)) {
            modelValue(valueToWrite);
        }                
        else { //non-observable
           allBindingsAccessor()._ko_property_writers.myBinding(valueToWrite);   
        } 
于 2012-08-31T17:03:29.417 回答