在淘汰赛JS中落地

时间:2017-08-23 11:31:05

标签: jquery knockout.js

我面临使用knockout js将数据绑定到多个字段的问题。 我发现这个代码要对它负责。这段代码不是我写的,所以无法理解背后的原因。 谁能解释一下呢?

=INDEX(Sheet2!$D$2:$D$10,SUMPRODUCT((A2=Sheet2!$A$2:$A$10)*(B2=Sheet2!$B$2:$B$10)*(C2=Sheet2!$C$2:$C$10)*(ROW(Sheet2!$A$2:$A$10)-1)))

这就是它的用法:

ko.bindingHandlers.isolatedOptions = {
//element, valueAccessor, allBindings, viewModel, bindingContext
init: function (element, valueAccessor) {
    var args = arguments;
    ko.computed({
        read: function () {
            ko.utils.unwrapObservable(valueAccessor());
            ko.bindingHandlers.options.update.apply(this, args);
        },
        owner: this,
        disposeWhenNodeIsRemoved: element
    });
},
update: function (element, valueAccessor)
{
    var args = arguments;
    ko.computed({
        read: function ()
        {
            ko.utils.unwrapObservable(valueAccessor());
            ko.bindingHandlers.options.update.apply(this, args);
        },
        owner: this,
        disposeWhenNodeIsRemoved: element
    });
}};

1 个答案:

答案 0 :(得分:1)

此代码为您的html代码创建自定义绑定,名为isolatedOptions,用于点击,更改,默认内置绑定值。必须使用某些HTML元素的data-bind属性在代码中使用它。

点击此处查看

http://knockoutjs.com/documentation/custom-bindings.html

您的元素是select,您的valueAccessor是$ root.procurementTypes。在设置元素选择的初始状态时调用init。它接受参数并运行init函数。如果你正在使用observables或计算的东西并且有变化,则可以通过knockout js多次调用update。最初在应用绑定时也会调用它。