如果符合某些条件,是否有办法在敲除中应用一个绑定,如果不满足这些标准,则不应用此绑定?
<div data-bind="custombinding: $data.values"></div>
如果$data.canEdit
为真,我需要应用此绑定,否则我不需要应用此绑定。
确切的例子比较复杂。
答案 0 :(得分:3)
我认为你通常不应该根据彼此的不同来制作不同的绑定。相反,创建对逻辑视图模型属性的依赖(这使您可以轻松地对涉及的逻辑进行单元测试)。你已经提到过你有这样一个属性:canEdit
,我认为是一个布尔可观察的。
如果这样做,您可以创建如下所示的自定义绑定:
<div data-bind="custombinding: { onlyIf: canEdit, vals: values }"></div>
此外,我还提出了第二个@JeremyBarnes的建议(使用if
绑定),例如:
<!-- ko if: canEdit -->
<div data-bind="custombinding: values"></div>
<!-- /ko -->
此外,如果必须,您可以在视图中包含以下内容:
<div data-bind="custombinding: !!canEdit() ? values : []"></div>
作为旁注,我建议将三元运算符的逻辑封装在计算的可观察量中。
然而,直接回答问题,如果你检查the custom binding documentation,你会发现你可以做你想做的事,因为绑定处理程序可以访问:
allBindings
该特定元素;以及bindingContext.$data
访问视图模型(例如,查找canEdit
)不可能提供更准确的答案或指导,因为您的问题在细节上相当低。
答案 1 :(得分:1)