javascript - Foreach 数据未通过 Knockout Js Object Observable 反射(reflect)到 UI

标签 javascript jquery knockout.js knockout-2.0

下面是 View 模式,我在其中获取 ajax 响应并加载到可观察值。

var userManagementVM = {
    responseSetUpData: ko.observable({
        userList: ko.observable(),
        userListViewModel: ko.observableArray(),
        MeetingId: ko.observable(),
        MeetingTypeId: ko.observable(),
        MeetingType: ko.observable()
    }),
     SetListOfUserInRoles: function () {
        var self = this;
        var ajaxUrl = ApplicationRootUrl("UserRoleManagement", "UserManagement");
        $.ajax({
            type: "GET",
            contentType: "application/json; charset=utf-8",
            url: ajaxUrl,
            dataType: "json",
            success: function (data) {
                self.responseSetUpData(data);
                console.log(self.responseSetUpData())
            },
            error: function (err) {

            }
        });
    }
}


$(document).ready(function () {
    ko.applyBindings(userManagementVM, document.getElementById("rightdash-container"));
    userManagementVM.SetListOfUserInRoles();
});

来自 ajax 的响应已成功加载到可观察值。下面是控制台的输出

response

HTML 代码

<table class="table table-striped">
    <thead>
        <tr>
            <th scope="col">Users</th>
            <th scope="col">Role</th>
        </tr>
    </thead>
    <tbody data-bind="foreach: responseSetUpData.userListViewModel">
        <tr>
            <td><input class="form-check-input" type="checkbox" data-bind="checked: SelectedUser"><span data-bind="text: $data.FirstName"></span></td>
            <td><select data-bind="options: $data.Roles,optionsText: 'Name',value: $data.SelectedRoleId,optionsCaption: '-- Select Role --'"></select></td>
        </tr>
    </tbody>
</table>

该值未绑定(bind)到 UI。

最佳答案

您需要在绑定(bind)中获取可观察值 - responseSetUpData() 的值:

<tbody data-bind="foreach: responseSetUpData().userListViewModel">

否则您将尝试从可观察函数对象获取userListViewModel:-)

关于javascript - Foreach 数据未通过 Knockout Js Object Observable 反射(reflect)到 UI,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47465084/

相关文章:

javascript - 如何延迟jquery悬停事件

javascript - 渲染完所有嵌套组件后,KnockoutJS afterRender 回调?

返回按计数排序的唯一值的 JavaScript 函数

javascript - 如何在javascript中检查对象中是否存在键

javascript - 如何在 Bootstrap 模式关闭后从按钮上移除焦点?

javascript - 我想为鼠标视差添加轻松过渡

javascript - 使用 Knockout 显示条件 html

javascript - 使用 Knockout JS 将绑定(bind)应用于数组

javascript - 如何从函数node.js内部使变量成为全局变量?

javascript - 使用 vega-lite 时禁用工具提示标签被 chop/增加工具提示字符限制