【问题标题】:How to print KnockoutJS observables to console?如何将 KnockoutJS observables 打印到控制台?
【发布时间】:2016-06-27 22:01:02
【问题描述】:

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

它是如何工作的:用户将选择一个单选按钮,来自 KnockoutJS observables 的代码将使用所选单选按钮的值更新“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>

【问题讨论】:

    标签: javascript jquery knockout.js


    【解决方案1】:

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

    【讨论】:

    • 尝试您的第一个解决方案时,我收到错误“未捕获的类型错误:无法读取未定义的属性 'radioFrom'”。这很奇怪,因为我给它一个初始值 Dev1。有什么问题?
    猜你喜欢
    • 1970-01-01
    • 2011-01-30
    • 1970-01-01
    • 2013-03-29
    • 1970-01-01
    • 2021-06-05
    • 1970-01-01
    相关资源
    最近更新 更多