在绑定 HTML 时访问 Knockout Obeserable 对象属性

Posted

技术标签:

【中文标题】在绑定 HTML 时访问 Knockout Obeserable 对象属性【英文标题】:Access the Knockout Obeserable object property while binding HTML 【发布时间】:2018-06-02 14:06:30 【问题描述】:

我,有一个可观察的属性如下

var ReportViewmodel =  
    responseDetailsSetUpData: ko.observable(
            Pagination: ko.observable(
                Pager: ko.observable(
                    TotalItems: ko.observable(),
                    CurrentPage: ko.observable(),
                    PageSize: ko.observable(),
                    TotalPages: ko.observable(),
                    StartPage: ko.observable(),
                    EndPage: ko.observable(),
                    ShowingItem: ko.observable()
                )
            ),
            Data: ko.observableArray([])
        )

$(document).ready(function () 
    ko.applyBindings(ReportViewmodel, document.getElementById("ReportForm"));
);

当我尝试在 html 中绑定属性时,我收到错误消息 $root.responseDetailsS​​etUpData(...).Pagination 不是函数

我尝试访问此链接中描述的属性

Knockout.js how to access the inner object property on data-bind

<td colspan="2" class="mdl-data-table__cell--non-numeric"><span data-bind="text: $root.responseDetailsSetUpData().Pagination().Pager().ShowingItem"></span></td>

错在哪里,我想不通。

谁能告诉我

【问题讨论】:

这是一个适用于 Knockout 2.0 的提琴手:jsfiddle.net/muc6e072。正如@notmeanymore 所说,responseDetailsSetUpData 可能不在您的视图模型的根目录中。 我,更新了代码 我更新了提琴手,没有 jQuery:jsfiddle.net/muc6e072/2。你能更新这个提琴手给我们一个不起作用的例子吗? 【参考方案1】:

我不确定,因为您提供的代码不足以说明问题,但我认为问题在于您的 $root。在这种情况下,您的 $root 可能不是具有 responseDetailsS​​etUpData 的虚拟机

【讨论】:

我,已经更新了代码。请检查并告诉我 为什么需要在绑定中添加$root?可以提供更多的HTML代码还是发布到代码sn-p?

以上是关于在绑定 HTML 时访问 Knockout Obeserable 对象属性的主要内容,如果未能解决你的问题,请参考以下文章

knockout 多值绑定

Knockout JS 增加去除修改绑定

html 使用Knockout JS在HTML中使用Name绑定ID

Knockout js在第二次绑定后继续显示/隐藏元素

Knockout.JS如何绑定dom元素绑定

学习汤姆大叔的knockout教程笔记