Trong knockout.js 2.1.0, trong một mẫu sử dụng liên kết foreach, bạn có thể truy cập chỉ mục của mục hiện tại thông qua hàm $ index (). Trong một ràng buộc foreach lồng nhau, có cách nào để truy cập chỉ mục của $ cha từ một mẫu không?
Giả sử tôi có cấu trúc dữ liệu như sau:
var application = {
topModel: [
{
{subModel: [{'foo':'foo'}, { 'bar':'bar'}]}, // this has top:0 and sub:0
{subModel: [{'foo2':'foo2'}, { 'bar2':'bar2'}]} // this has top:0 and sub:1
},
{
{subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:1 sub:0
},
{
{subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:0
{subModel: [{'foo':'foo'}, { 'bar':'bar'}]} // this is top:2 sub:1
},
...
]};
Với điều này, tôi muốn in đường dẫn đến từng mô hình, sử dụng các chỉ số: [topModel-index subModel-index], để đầu ra sẽ giống như sau:
[0 0]
[0 1]
[1 0]
[2 0]
[2 1]
...
Tôi đã ràng buộc các mô hình bằng foreach, nhưng tôi không thể tìm ra cách truy cập chỉ mục của topModel trong ngữ cảnh của subModel. Ví dụ sau đây cho thấy một cách tiếp cận mà tôi đã thử nhưng không hiệu quả, vì tôi không thể tìm ra cách truy cập chỉ mục của liên kết giới thiệu $ cha.
<!--ko foreach: topModel -->
<!--ko foreach: subModel -->
[<span data-bind="text: $parent.index()"></span>
<span data-bind="text: $index()"></span>]
<!--/ko-->
<!--/ko-->
Nên in ra: 0 1, 0 2, 1 0, 1 1, 1 2, 2 0, 2 1, ...
()
sau$index
đó.