编程语言
首页 > 编程语言> > JavaScript-删除js变量覆盖

JavaScript-删除js变量覆盖

作者:互联网

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

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

在我的ViewModel中,我接受并修改变量.根据Google Chrome的javascript控制台,正在修改变量.我尝试观察它们,以便他们可以像这样更新用户界面:

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

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

解决方法:

你做错了.创建剔除可观察属性时,它们只会使用您为其赋予的值进行初始化,即ko.observable(exactDown).此后,无法让敲除方法知道您用于初始化的变量何时更改.就像您尝试调用ko.observable(1)一样.

使用某些全局变量初始化敲除的可观察属性并不意味着敲除将开始监视该变量的更改.

不必像您那样修改全局变量:

exactDown = newValue;

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

viewModel.down(newValue);

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

标签:knockout-js,javascript
来源: https://codeday.me/bug/20191201/2077706.html