如何将KnockoutJS observable打印到控制台?

时间:2016-06-27 22:01:02

标签: javascript jquery knockout.js

我在从html访问数据时遇到问题。

工作原理:用户将选择一个单选按钮,KnockoutJS observables中的代码将更新" data-bind =" text:radioFrom"使用所选单选按钮的值。我想打印出存储在变量中的字符串" data-bind =" text:radioFrom"到控制台。

我已经尝试过这样做了,但我不断收到错误,或者更常见的是,它只是将变量输出为" undefined"。如何将其打印到控制台(或警报)?

我的尝试

---------------------------------------------------
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>

1 个答案:

答案 0 :(得分: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()