Javascript 剔除条件绑定(但不是本机的“if”方式)

Javascript 剔除条件绑定(但不是本机的“if”方式),javascript,data-binding,knockout.js,Javascript,Data Binding,Knockout.js,我有这样一个案例(过于简化): 因为有很多其他的事情会增加测试和复制大量代码,所以我需要能够在一行中完成这项工作,比如: <a href="url" data-bind="if: readOnly() { click: ToggleReadOnly() } else: { visible: someObservable }" /> 有什么方法可以做到这一点吗?有几种方法可以做到这一点。每个人都有自己的长处和短处。但我将重点介绍如何使用模板 为以只读模式呈现或不以只读模式呈

我有这样一个案例(过于简化):


因为有很多其他的事情会增加测试和复制大量代码,所以我需要能够在一行中完成这项工作,比如:

<a href="url" data-bind="if: readOnly() { click: ToggleReadOnly() } else: { visible: someObservable }"  />


有什么方法可以做到这一点吗?

有几种方法可以做到这一点。每个人都有自己的长处和短处。但我将重点介绍如何使用模板

为以只读模式呈现或不以只读模式呈现的每个状态创建模板。您只需要向模型中添加一个决定使用哪个模板的函数


函数ViewModel(){
this.readOnly=ko.可观察(真);
this.someObservable=ko.observable(true);
this.ToggleReadOnly=函数(数据、事件){
this.readOnly(!this.readOnly());
返回false;
}.约束(本);
this.selectTemplate=函数(数据){
返回此文件。只读()
?“模板只读链接”
:“模板读写链接”;
}.约束(本);
}


您可以探索其他方法,如自定义组件、自定义绑定等,但这可能是最容易实现的方法。

您可以发布一些
someBinding
anotherBinding
的真实示例吗?@nemesv不太可能,我还没走多远,但应该是这样的。我已经用一些更明确的绑定编辑了这个问题,希望这能有所帮助。你能告诉我们你到底想要什么吗?如果readonly(),则需要单击,如果没有,则应该可见?这是一种问候吗?
<a href="url" data-bind="if: readOnly() { click: ToggleReadOnly() } else: { visible: someObservable }"  />