好吧,标题可能有点混乱,所以我会解释......
我正在编写一个自定义绑定,我将向其传递一个 observableArray。这个 observableArray 是异步填充的,元素被一个一个推入。
update
问题是每次 observableArray 发生突变时都会调用我的自定义绑定(方法)。这是有道理的,但在这种情况下没有帮助,因为这意味着第一个元素被渲染n次,其中n是 observableArray 的长度,第二个元素被渲染n-1次,只有第n 个元素被渲染渲染一次。
任何人都可以解释一种让自定义绑定只做某事的简洁方法
- observableArray 已完全填充,或
- 当添加了自定义绑定尚未呈现的元素时?
我可以想出几种方法来解决这个问题,在父视图模型上使用一个额外的属性/可观察作为一个标志,上面写着“完全填充,你可以现在渲染项目”或者每个元素上的一个属性,上面写着“你'已经渲染了我'。然而,这些都很尴尬,特别是 observableArray 中的对象也有 observableArray 属性。
对于这个问题,没有更好的 Knockout/MVVM 解决方案吗?
更新: 为了清楚起见,我正在构建的东西是这样的
<domElmnt data-bind="myBinding: { collection: TypeGroups }" />
在哪里
TypeGroups = ko.observableArray();
并且其中包含的元素TypeGroups
是具有可观察属性的另一个视图模型的所有实例。
每次我调用TypeGroups.push(obj)
自定义绑定时都会再次调用一次。