【发布时间】:2015-06-04 19:19:17
【问题描述】:
我在一个项目中尝试为给定查询呈现搜索过滤器方面,但规则是我不能简单地使用嵌套的ko: foreachstatements,因为不同的结果集有不同的显示规则。
我正在映射的对象如下所示:
FacetResults: ko.observableArray([
{
Term: 'myTerm',
Values: [{'key1': 5}, {'key2': 13}]
},
{ Term: 'myTerm2',
Values: [{'key3': 6}, {'key4': 42}]
}]);
基本上,我想要完成的是类似
<!-- ko foreach: FacetResults()[0] -->
<span data-bind="text: Term"></span>
<ul data-bind="foreach: Values">
<!-- do something -->
</ul>
<!-- /ko -->
但是如果没有得到“无法解析绑定”错误,我就无法做到这一点。
我可以做类似的事情
<span data-bind="text: FacetResults[0]"></span>
并返回“对象对象”,但一旦我这样做
<span data-bind="text: FacetResults[0[].Term" </span>,
我得到了同样的绑定错误。
我已经考虑将结果集分解为多个 observableArrays 以避免这种情况,但这是一个不需要特殊表示逻辑的用例,我可以在其中使用嵌套的 ko: foreach 循环,所以我如果可能的话,我想坚持一个数组(特别是考虑到返回的数据类型总是相同的,并且当它们从调用返回时让我免于解析这些)。
对于它的价值,我还能够在运行时检查对象,并通过 console.log(vm.FacetResults()[0].Term) 断言 FacetResults[0].Term 是一个有效字段;没有问题。
任何帮助将不胜感激。谢谢!
【问题讨论】:
标签: javascript knockout.js foreach