【发布时间】:2018-03-20 00:10:15
【问题描述】:
我正在尝试创建要在 foreach 绑定中使用的自定义绑定,并且需要访问当前的 observableArray 和 $data。
现在我注意到 bindingContext arg 包含 $data, $parent, $root 等,但是我似乎找不到访问正在迭代的数组的方法,有没有办法?
为了清楚起见,这里是我的意思的一个例子:
<div data-bind="foreach: People">
<button data-bind="customBinding: someArg">DoSomethingWithArrayAndElement</button>
</div>
在这种情况下customBinding 似乎屈服了:
- $data = 迭代中的当前元素
- $parent = 包含
People数组的视图模型 - root = 与 $parent 相同
- $index = 迭代数组中的当前索引
- $parents = 包含视图模型的数组
【问题讨论】:
-
你可能不得不从不同的角度来攻击它。你的自定义绑定应该做什么,它需要数组?
-
我在各种视图模型中有很多重复的代码,这些代码使用其他一些常见的逻辑进行了一些添加/删除,所以我试图通过移动常见的东西来改进这种重用到自定义绑定(因为每个实例中的逻辑都是相同的)。所以这只是我试图减少代码来维护。
-
如果您要访问当前正在迭代的数组,您只需在 custombindings 中使用
viewModel.people()即可。 viewModel 提供您所需要的。欢呼 -
Viewmodel 在自定义绑定中已被弃用,而且它实际上不再可重用,因为您必须为每种类型进行绑定,或者确保它们都具有相同的变量名。跨度>
-
那是周到的。你确定
viewModel被贬值了,我仍然在文档中找到它吗?谢谢