Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/445.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 敲除Js自定义绑定处理程序更新依赖项_Javascript_Knockout.js - Fatal编程技术网

Javascript 敲除Js自定义绑定处理程序更新依赖项

Javascript 敲除Js自定义绑定处理程序更新依赖项,javascript,knockout.js,Javascript,Knockout.js,本帖: 对如何在自定义绑定处理程序中绑定viewModel可观测项做出以下声明: “任何被访问其值的可观察对象都将创建一个依赖项。” 如何在自定义绑定处理程序中访问viewModel上的可观察X中的值,而不创建依赖项,使自定义绑定处理程序在以后更改X时更新 我做了一把小提琴来展示这一点。行viewModel.xxx()创建对“xxx”可观察对象的依赖关系 简短的回答:你不能 afaik:创建一个普通JavaScript属性,并引用它。大概是这样的: function Vm(){ this

本帖: 对如何在自定义绑定处理程序中绑定viewModel可观测项做出以下声明: “任何被访问其值的可观察对象都将创建一个依赖项。”

如何在自定义绑定处理程序中访问viewModel上的可观察X中的值,而不创建依赖项,使自定义绑定处理程序在以后更改X时更新

我做了一把小提琴来展示这一点。行
viewModel.xxx()创建对“xxx”可观察对象的依赖关系


简短的回答:你不能

afaik:创建一个普通JavaScript属性,并引用它。大概是这样的:

function Vm(){
    this.aOb = ko.observable('a value');
    this.a = this.aOb();
}
现在,您可以在自定义绑定中引用
a
,对aOb的更改不会导致绑定重新启动

如果您希望始终保持a与aOb的同步,您可以使用subscribe:

function Vm(){
    this.aOb = ko.observable('a value');
    this.a = this.aOb();

    this.aOb.subscribe(function(newVal){
       this.a = newVal;
    }.bind(this));
}

如果您使用的是KO 2.3+,那么您也可以执行
viewModel.xxx.peek()
,这是一个更好的解决方案,不需要额外的代码。