敲除js变量覆盖
knockout js variable override
我的脚本中有一些全局变量:
var yardsToFirst = 10;
var yardsToTD = 80;
var exactDown = 1;
在我的ViewModel中,我接受并修改变量。根据谷歌浏览器的javascript控制台,这些变量正在被修改。我试着让他们观察,这样他们就可以像这样更新UI:
self.down = ko.observable(exactDown);
self.toGo = ko.observable(yardsToFirst);
self.toGoal = ko.observable(yardsToTD);
当我加载页面时,一切都很好。当我开始修改数据时,问题就出现了。UI永远不会改变。我已经检查过了,javascript控制台显示全局变量包含正确的数字,但UI仍然没有更新。我是在做一些不可能的事情,还是走错了路?
你做错了。当您创建敲除可观察属性时,它们将使用您给它们的值进行初始化,即ko.observable(exactDown)
。在那之后,敲除无法知道用于初始化的变量何时更改。这就像你试图呼叫ko.observable(1)
一样。
用一些全局变量初始化敲除可观察属性并不意味着敲除将开始观察该变量的变化。
而不是像您那样修改全局变量:
exactDown = newValue;
并且期望敲除会获得新的值,您需要直接修改敲除属性,如下所示:
viewModel.down(newValue);
要修改敲除属性,需要将它们作为函数调用(因为它们基本上是JavaScript函数)。
相关文章:
- 像createComment这样的各种自定义变量名在内联javascript中被覆盖,但在外部js中没有.为什么?
- 在javascript中使用覆盖变量是不是一种糟糕的做法
- 由于异步回调,变量被覆盖
- 被覆盖的 setTimeout 变量中的函数
- 定义变量是否比在 JS 中覆盖变量使用更多的资源
- 异步Javascript变量覆盖
- 表,并选择要传递到新页面的rRow(id)(这样它就不会覆盖行选择的变量)
- 敲除js变量覆盖
- 返回语句后的函数声明全局变量不会被覆盖
- 在 forEach 循环中覆盖的变量
- 如何保护全局变量以在 Node.js 中被覆盖
- 两个函数使用相同的变量,都不会覆盖其原始变量
- 长方程与覆盖变量
- 使用相同的覆盖变量的 JavaScript 对象
- 不覆盖变量
- 每次循环覆盖变量
- 从数据库读取时覆盖变量
- JavaScript -用户的安全覆盖变量
- 覆盖变量内容javascript
- 覆盖变量或检查是否存在