我有一个视图模型MyClass,它有一个数组属性,MyList,而MyList是一个具有Prop1和MySubList等属性的对象。
我有一个<div data-bind="with: MyClass">,可以在其中构建一个表。我希望表的列是可排序的,所以大多数<th>看起来如下所示:
<th data-bind="sort: { myArray: MyList, myProperty: 'Prop1' }">Prop One</th>
我有一个针对上述sort的sort,它在myArray中运行,在myProperty上进行排序。一切都很好。
当需要处理MySubList属性的条目时,我希望为MySubList中的每个项创建一个可变的列数。
现在,从一个MyClass实例到另一个实例,MyList中的项数可能有所不同,但是在MyList的各个项中,MySubList中的项目数是固定的,因此我可以可靠地从任何一个MyList项中确定我需要的列数。
所有这些都是可以观察到的。
因此,为了提供可变的列数,我有以下构造:
<!-- ko foreach: { data: MyList()[0].MySubList, as: 'subList' -->
<th data-bind="sort: { myArray: MyList, myProperty: 'SomeSubListProperty' }"></th>
<@-- /ko -->柱子长得很棒。但问题是:在sort处理程序中,MyList是未定义的。MySubList也是。由于MyList不是为上面的其他<th>未定义的,我猜ko引入了一个新的范围。当然,MyList在实际foreach语句的作用域中,因为data作为subList有效。因此,我正在寻找一种将对MyList的良好引用传递到sort的方法。
这够继续下去了吗?
发布于 2016-03-10 19:37:50
由于在循环中更改了作用域,因此需要从循环中访问父作用域,这可能会有所帮助:
<!-- ko foreach: { data: MyList()[0].MySubList, as: 'subList' -->
<th data-bind="sort: { myArray: $parent.MyList, myProperty: 'SomeSubListProperty' }"> </th>
<@-- /ko -->https://stackoverflow.com/questions/35925548
复制相似问题