我不确定为什么它无法解析绑定 - 每个绑定都包含内容。 这是错误消息:
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的其他部分来帮助解决此问题,但请告知我们。
答案 0 :(得分:1)
将foreach
放在data-bind
属性的引号中。有些浏览器很挑剔。
答案 1 :(得分:1)
错误消息表示ViewModel的RoleTypes
数组中的一个或多个对象没有名为Users
的属性。如果没有看到定义您的VM的代码我只能猜到原因,但Users
是否可能是顶级属性而不是每个RoleType
的子属性?如果是,那么您需要将Users
替换为$root.Users
,以便Knockout知道在哪里寻找它。
根据评论进行更新
RoleTypes
的每个元素都需要一个名为observableArray
的{{1}}属性,然后由特定角色的用户填充。完成此操作后,您无需使用Users
限定Users
,因为它是当前迭代元素的属性。