Knockout.js knockoutjs-如何观察全局变量变化

Knockout.js knockoutjs-如何观察全局变量变化,knockout.js,Knockout.js,我需要观察变量myGlobalVar。我需要检测对它的更改并显示它们 函数AppViewModel{ this.myVar=ko.observemyglobalvar; } //激活knockout.js ko.applyBindingsnew-AppViewModel; myGlobalVar=Foo; 测试: setTimeoutfunction{ myGlobalVar=Bar; console.logmyVar设置为“Bar”。证明:; console.logmyGlobalVar;

我需要观察变量myGlobalVar。我需要检测对它的更改并显示它们

函数AppViewModel{ this.myVar=ko.observemyglobalvar; } //激活knockout.js ko.applyBindingsnew-AppViewModel; myGlobalVar=Foo; 测试:

setTimeoutfunction{ myGlobalVar=Bar; console.logmyVar设置为“Bar”。证明:; console.logmyGlobalVar; }, 1000;
您可以只更新observable而不是全局变量,为此,我给您举了一个例子,说明如何使用vm.myVarvalue从任何地方更改它

如果您认为这没有帮助,那么请再三考虑,您可以创建一个间隔函数来设置当前的全局变量,如vm.myVarmyGlobalVar

这就是为什么可观测存在的原因 希望它真的有帮助

myGlobalVar=Foo; 函数AppViewModel{ this.myVar=ko.observemyglobalvar; } //激活knockout.js你看我在分配var vm var vm=新的AppViewModel; ko.applyBindingsvm; setTimeoutfunction{ //编辑可观察对象以更新视图 vm.myVarBar; console.logmyVar设置为“Bar”。证明:; console.logvm.myVar; }, 1000; myGlobalVar=Foo;
测试:

我能够解决约翰·史密斯的答案,我改变了它,添加了一个改变方法。我也可以只使用一个时间间隔,但在这种情况下,改变更好

myGlobalVar=Foo; 函数AppViewModel{ this.myVar=ko.observemyglobalvar; } //激活knockout.js你看我在分配var vm var vm=新的AppViewModel; ko.applyBindingsvm; setTimeoutfunction{ //编辑可观察对象以更新视图 vm.myVarBar; console.logmyVar设置为“Bar”。证明:; console.logvm.myVar; }, 1000; $globalVarField.changefunction{ myGlobalVar=$this.val; console.logglobalVarField更改为“+myGlobalVar+”; vm.myVarmyGlobalVar; }; .as控制台包装{最大高度:100px!重要;} myGlobalVar=Foo; 测试:


输入myGlobalVar的值:无法观察变量的更改。有一些变通办法。您可以创建一个对象,将所有关注的变量作为代理键。并在每次更改每个属性时使用代理集处理程序更新viewModel中的相应属性。谢谢,我可以通过修改来解决它