首先:我是淘汰 js 的新手,并试图围绕淘汰/mvvm 的思维方式来思考,所以如果我的问题被证明是微不足道的,请原谅我。
我所拥有的是以下情况:我有一个淘汰视图模型,其中包含一个 observableArray 所选票证对象。该数组表示更大票证集合的用户定义选择/子集。整套票都列在一个 jqgrid 表中,每一行都有一个复选框,应该告诉您是否选择了每张票。这意味着只要“selectedTickets”数组发生变化,就需要更新复选框的值。除此之外,我还希望用户能够单击每个复选框,以便从选择中添加/删除票证。这似乎是一个相当可接受的功能,对吧?
但是,我确实很难看到如何使用淘汰赛“检查”绑定来实现这一点。我的第一个想法是在名为“isSelected”的视图模型对象上使用计算/依赖的可观察对象,这将反映 selectedTickets 数组中的变化,并根据票证是否在 selectedTickets 数组中返回真或假。这里的第一个问题是我需要将一个参数传递给计算的 observable,说明它应该查找哪个票证 ID,并且据我所知,它只适用于可写的计算 observable。然而,获取复选框的状态似乎不像是一个写操作,所以已经开始闻起来了。下一个问题是绑定需要是双向的,因为我希望用户能够更改每个复选框的状态并相应地更新 selectedTickets 数组。这是一个不同的操作,因为它实际上会删除/添加票到 selectedTickets 数组。这将再次触发计算的 observable 尝试设置复选框的状态。如果我尝试这样做,似乎这两个用例最终可能会像无限循环一样结束。通过仅使用复选框的选中绑定,我还没有找到组合这两个用例的好方法。
我当然可以手动对复选框进行事件处理,方法是将侦听器连接到复选框上的更改事件和剔除视图模型中的 selectedTickets 数组,但我希望通过剔除绑定可以更加自动化。
希望有一些淘汰赛高手可以指导我走上一条好路,因为我觉得我已经偏离了这条路。