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