2012-07-21 66 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