gpt4 book ai didi

javascript - knockout js变量覆盖

转载 作者:行者123 更新时间:2023-11-29 10:50:16 25 4
gpt4 key购买 nike

我的脚本中有一些全局变量:

var yardsToFirst = 10;
var yardsToTD = 80;
var exactDown = 1;

在我的 ViewModel 中,我接收并修改变量。根据 Google Chrome 浏览器的 javascript 控制台,变量正在被修改。我尝试观察他们,以便他们可以像这样更新 UI:

self.down = ko.observable(exactDown);
self.toGo = ko.observable(yardsToFirst);
self.toGoal = ko.observable(yardsToTD);

当我加载页面时一切正常。当我开始修改数据时,问题就来了。用户界面永远不会改变。我已经检查过,javascript 控制台说全局变量保存了正确的数字,但 UI 仍然没有更新。我是在做一些不可能的事情还是我做错了?

最佳答案

你做错了。当您创建 knockout observable 属性时,它们将仅使用您给它们的值进行初始化,即 ko.observable(exactDown)。在那之后,knockout 就没有办法知道你用于初始化的变量什么时候改变了。就像您尝试调用 ko.observable(1) 一样。

使用某个全局变量初始化 knockout 可观察属性并不意味着 knockout 将开始监视该变量的变化。

而不是像你那样修改全局变量:

exactDown = newValue;

...并且期望 knockout 将获得新值,您需要直接修改 knockout 属性,如下所示:

viewModel.down(newValue);

要修改 knockout 属性,您需要将它们作为函数调用(因为它们基本上是 JavaScript 函数)。

关于javascript - knockout js变量覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11595006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com