2012-07-21 74 views
3

我在我的脚本一些全局变量:淘汰赛JS变量超越控制

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

在我的ViewModel我参加和修改的变量。根据Google Chrome的JavaScript控制台,变量正在被修改。我尝试让他们观察,以便他们可以像这样更新用户界面:

​​

这一切工作正常,当我加载页面。当我开始修改数据时出现问题。 UI永远不会改变。我已检查和JavaScript控制台说,全局变量保持正确的数字,但仍然没有更新用户界面。我正在做一些不可能的事情,或者我以错误的方式去做?

回答

3

你做错了。当您创建可敲击的可观察属性时,它们只会初始化您输入的值,即ko.observable(exactDown)。在那之后,敲门人无法知道您用于初始化的变量何时发生变化。这就像你试图拨打ko.observable(1)

用一些全局变量初始化knockout observable属性并不意味着knockout将开始观察变量的变化。

不是修改全局变量像你这样做:

exactDown = newValue; 

...并期望淘汰赛将搭载新的价值,就需要直接修改淘汰赛性质,像这样:

viewModel.down(newValue); 

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

+0

谢谢,让我开始的地方。我觉得我做错了什么。再次感谢输入 – user1371513 2012-07-21 19:03:57

+0

这实际上给了我足够的想法,非常感谢你 – user1371513 2012-07-21 19:17:17