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