【发布时间】:2021-01-26 18:17:30
【问题描述】:
我需要观察变量myGlobalVar。我需要检测对它的更改并显示它们。
function AppViewModel() {
this.myVar = ko.observable(myGlobalVar);
}
// Activates knockout.js
ko.applyBindings(new AppViewModel());
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.2/knockout-min.js"></script>
<script>myGlobalVar = "Foo";</script>
<p>Test: <strong data-bind="text: myVar"></strong></p>
<script>
setTimeout(function() {
myGlobalVar = "Bar";
console.log("myVar set to 'Bar'. Proof:");
console.log(myGlobalVar);
}, 1000);
</script>
在上面的示例代码中,我最初将window.test 设置为“Foo”,然后在 3 秒后将其设置为“Bar”,但未检测到更改。
【问题讨论】:
-
您无法观察到变量的变化。有解决方法。您可以创建一个 proxy 对象,其中所有监视的变量作为代理的键。并在每个属性更改时使用代理集处理程序更新 viewModel 中的相应属性。 Listening for variable changes in JavaScript
标签: knockout.js