未捕获错误:无法解析绑定Knockout

时间:2013-10-04 17:03:03

标签: javascript knockout.js

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

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的其他部分来帮助解决此问题,但请告知我们。

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:1)

错误消息表示ViewModel的RoleTypes数组中的一个或多个对象没有名为Users的属性。如果没有看到定义您的VM的代码我只能猜到原因,但Users是否可能是顶级属性而不是每个RoleType的子属性?如果是,那么您需要将Users替换为$root.Users,以便Knockout知道在哪里寻找它。

根据评论进行更新

RoleTypes的每个元素都需要一个名为observableArray的{​​{1}}属性,然后由特定角色的用户填充。完成此操作后,您无需使用Users限定Users,因为它是当前迭代元素的属性。