Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/22.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
Javascript knockout.js不可拆卸可观测函数_Javascript_Knockout.js - Fatal编程技术网

Javascript knockout.js不可拆卸可观测函数

Javascript knockout.js不可拆卸可观测函数,javascript,knockout.js,Javascript,Knockout.js,我发现很多例子- 当我观看淘汰版时,我发现以下代码: 我知道ko.utils.unwrapobbservable(valueAccessor())做什么;函数,但它在代码中做什么? 我们不使用返回值。Knockout为绑定中评估的可观察项设置发布-订阅依赖项,以便在可观察项发生更改时可以更新绑定。代码只是使用unwrapObservable作为一种安全的方法来评估传递给绑定的valueAccessor,捕获依赖项。Knockout根据您在当前迭代中使用的可观察项设置依赖项链 要在可观察的a更改时

我发现很多例子- 当我观看淘汰版时,我发现以下代码:

我知道ko.utils.unwrapobbservable(valueAccessor())做什么;函数,但它在代码中做什么?
我们不使用返回值。

Knockout为绑定中评估的可观察项设置发布-订阅依赖项,以便在可观察项发生更改时可以更新绑定。代码只是使用unwrapObservable作为一种安全的方法来评估传递给绑定的valueAccessor,捕获依赖项。

Knockout根据您在当前迭代中使用的可观察项设置依赖项链

要在可观察的
a
更改时再次执行更新功能,您需要直接或间接访问
a

假设BindHandler使用以下语法:


您需要使用以下js代码之一:

valueAccessor();//直接访问
ko.utils.unwrapobbservable(valueAccessor);//直接访问
如果bindHandler使用以下语法:


您需要使用以下js使更新处理程序依赖于
A

//此行没有依赖项注入
var va=valueAccessor();
//直接访问
va.arg0();
ko.utils.不可观测(va.arg0);

有关详细信息,请参阅。

谢谢您的回答,我不知道只有当我们能够访问valueAccessor()()(如果我理解正确)时更新函数才会执行。我想您的意思是-?是的,这个更好!更换原来的链接。
// wrapper to hasFocus that also selects text and applies focus async
ko.bindingHandlers.selectAndFocus = {
    init: function (element, valueAccessor, allBindingsAccessor, bindingContext) {
        ko.bindingHandlers.hasFocus.init(element, valueAccessor, allBindingsAccessor, bindingContext);
        ko.utils.registerEventHandler(element, 'focus', function () {
            element.focus();
        });
    },
    update: function (element, valueAccessor) {
        ko.utils.unwrapObservable(valueAccessor()); // for dependency
        // ensure that element is visible before trying to focus
        setTimeout(function () {
            ko.bindingHandlers.hasFocus.update(element, valueAccessor);
        }, 0);
    }
};