Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Knockout.js 支持写入不可观察对象的绑定提供程序_Knockout.js_Knockout 2.0 - Fatal编程技术网

Knockout.js 支持写入不可观察对象的绑定提供程序

Knockout.js 支持写入不可观察对象的绑定提供程序,knockout.js,knockout-2.0,Knockout.js,Knockout 2.0,我正在为KO开发一个会议库 它使用自己的数据属性和绑定提供程序。 内置的one可以单向绑定到不可观察对象,以便BindingHandler使用未导出的ko.expressionRewriting.writeValueToProperty函数更新模型。例如,值绑定 问题是,我还没有弄清楚内置绑定提供程序是如何实现这一点的,因为我在所有字符串求值代码中都迷失了方向 我可以用一个计算机来修复它,但我宁愿像内置的那样去做。这是一个小提琴证明,内置版本正在工作,以写入不可观测的,而无需计算 那么,如何才能

我正在为KO开发一个会议库

它使用自己的数据属性和绑定提供程序。 内置的one可以单向绑定到不可观察对象,以便BindingHandler使用未导出的ko.expressionRewriting.writeValueToProperty函数更新模型。例如,值绑定

问题是,我还没有弄清楚内置绑定提供程序是如何实现这一点的,因为我在所有字符串求值代码中都迷失了方向

我可以用一个计算机来修复它,但我宁愿像内置的那样去做。这是一个小提琴证明,内置版本正在工作,以写入不可观测的,而无需计算

那么,如何才能将不可观察的对象写入到利用writeValueToProperty的BindingHandler呢?

我这样解决了这个问题

var applyMemberWriter = function(bindings, bindingName, accessor, memberName, context) {
    if(!ko.isObservable(accessor)) {
        bindings._ko_property_writers = bindings._ko_property_writers || {};

        bindings._ko_property_writers[bindingName] = function(value) {
            context[memberName] = value;
        };
    }
};
需要调用它来对非可观测、完整源应用双向绑定

上面是KO 2.x的

对于KO 3.x