0

我不确定为什么它无法解析绑定 - 它们每个都包含内容。这是错误消息:

Uncaught Exception (js): Uncaught Error: Unable to parse bindings.
Message: ReferenceError: Users is not defined;
Bindings value: template: { name: 'grid', foreach: Users}

看法:

<div data-bind="foreach: RoleTypes">
            <h3><!--ko text: RoleName--><!--/ko--> (<!--ko text: UserCount--><!--/ko-->)</h3>
            <div id="gridView"  data-bind="template: { name: 'grid', foreach: Users}">
                <section id="Images">
                    <section id="users"></section>
                </section>
            </div>
        </div>

Javascript:

var getRoles = function () {
        Ajax.Get({
            Url: ...,
            DataToSubmit: {id: properties.Id },
            DataType: "json",
            OnSuccess: function (roleData, status, jqXHR) {
                // bind role types
                bindModel(roleData);

                Ajax.Get({
                    Url: ...,
                    DataToSubmit: { pageNumber: 1, id: properties.Id },
                    DataType: "json",
                    OnSuccess: function (userData, status, jqXHR) {

                    }
                });
            }
        });
    };

我不确定要分享我的 javascript 的哪些其他部分来帮助解决这个问题,但请告诉我。

4

2 回答 2

1

在你的属性中加上foreach引号。data-bind有些浏览器很挑剔。

于 2013-10-04T17:08:10.913 回答
1

该错误消息意味着您的 ViewModelRoleTypes数组中的一个或多个对象没有名为Users. 没有看到定义你的虚拟机的代码,我只能猜测为什么,但它有可能Users是顶级属性而不是每个的子属性RoleType吗?如果是这样,那么您需要替换Users$root.Users以便 Knockout 知道在哪里寻找它。

根据评论更新

每个元素都RoleTypes需要有一个observableArray名为的属性Users,然后填充特定角色的用户。一旦你这样做了,你就不必限定Userswith$root因为它是当前迭代元素的属性。

于 2013-10-04T18:19:33.927 回答