首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >bindingHandlers中的敲除范围问题

bindingHandlers中的敲除范围问题
EN

Stack Overflow用户
提问于 2016-03-10 19:30:53
回答 1查看 43关注 0票数 0

我有一个视图模型MyClass,它有一个数组属性,MyList,而MyList是一个具有Prop1和MySubList等属性的对象。

我有一个<div data-bind="with: MyClass">,可以在其中构建一个表。我希望表的列是可排序的,所以大多数<th>看起来如下所示:

<th data-bind="sort: { myArray: MyList, myProperty: 'Prop1' }">Prop One</th>

我有一个针对上述sortsort,它在myArray中运行,在myProperty上进行排序。一切都很好。

当需要处理MySubList属性的条目时,我希望为MySubList中的每个项创建一个可变的列数。

现在,从一个MyClass实例到另一个实例,MyList中的项数可能有所不同,但是在MyList的各个项中,MySubList中的项目数是固定的,因此我可以可靠地从任何一个MyList项中确定我需要的列数。

所有这些都是可以观察到的。

因此,为了提供可变的列数,我有以下构造:

代码语言:javascript
复制
<!-- 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的方法。

这够继续下去了吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-10 19:37:50

由于在循环中更改了作用域,因此需要从循环中访问父作用域,这可能会有所帮助:

代码语言:javascript
复制
<!-- ko foreach: { data: MyList()[0].MySubList, as: 'subList' -->
<th data-bind="sort: { myArray: $parent.MyList, myProperty: 'SomeSubListProperty' }">  </th>
<@-- /ko -->
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35925548

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档