2016-06-27 8 views
0

htmlのデータにアクセスする際に問題が発生しています。KnockoutJS observablesをコンソールに印刷するにはどうすればいいですか?

どのように動作するのですか:ユーザーはラジオボタンを選択し、KnockoutJS観測所のコードは "data-bind =" text:radioFrom "を選択したラジオボタンの値で更新します。変数 "data-bind =" text: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

関連する問題