2016-06-27 45 views
0

我在訪問html數據時遇到問題。如何將KnockoutJS observables打印到控制檯?

工作原理:用戶將選擇一個單選按鈕,KnockoutJS observables中的代碼將使用所選單選按鈕的值更新「data-bind =」text:radioFrom「。我想打印出字符串存儲在變量「data-bind =」文本:radioFrom「到控制檯。

我試過這樣做,但我不斷收到錯誤或更頻繁地只輸出變量爲「未定義」。我怎樣才能打印到控制檯(或在一個警報)?

我嘗試

--------------------------------------------------- 
var jsonRadioFrom = JSON.stringify(self.radioFrom);   
console.log(jsonRadioFrom); 
--------------------------------------------------- 
console.log(self.radioFrom) 
--------------------------------------------------- 
console.log(self.radioFrom.name) 
--------------------------------------------------- 

這些是單選按鈕

<td class="label">From:</td> 
<td> 
    <label><input type="radio" value="Dev1" data-bind="checked: radioFrom" />Dev [devName1]</label> 
    <label><input type="radio" value="Dev2" data-bind="checked: radioFrom" />Dev2 [devName2]</label> 
</td> 

這保持選中的單選按鈕

<tr> 
    <td class="label">From:</td> 
    <td data-bind="text: radioFrom"></td> 
</tr> 
的值

這是我的JavaScript/KnockoutJS

<script> 
    var TabViewModel = function(){ 
     var self = this; 
     self.radioFrom = ko.observable("Dev1"); 
    }; 
    ko.applyBindings(new TabViewModel()); 
</script> 

回答

2

ko.dataFor()的一部分被給定的HTML元素綁定KO視圖模型。

ko.dataFor($("body")[0]).radioFrom() 

另一種選擇是TabViewModel的實例分配給全局變量,因此它的訪問從控制檯自動完成

<script> 
    var TabViewModel = function(){ 
     var self = this; 
     self.radioFrom = ko.observable("Dev1"); 
    }; 
    window.viewModel = new TabViewModel(); 
    ko.applyBindings(window.viewModel); 
</script> 

現在下面的工作:

viewModel.radioFrom() 
+0

當試圖您的第一個解決方案,我得到一個錯誤「Uncaught TypeError:無法讀取未定義的屬性'radioFrom'」。這很奇怪,因爲我給它初始值爲Dev1。什麼可能是錯的? – ButterJones

相關問題