将可见参数绑定到Knockout中的'或'语句

时间:2014-02-11 09:20:22

标签: javascript knockout.js

当两个条件之一为真时,我想绑定一个visible属性为true。类似于以下内容 -

 $(document.getElementById("ddlTest")).attr("data-bind", "options:  $root.Plan, optionsValue:'PlanNameId', optionsText:'PlanName', value: $root.PlanTest, optionsCaption: 'Select', visible: TestId() !== 3 || 4 || 5");

代码正常工作只有一个条件,但我想要visible

的多个OR条件

2 个答案:

答案 0 :(得分:3)

每次比较都必须重复TestId()

visible: (TestId() !== 3 || TestId() !== 4 || TestId() !== 5)

通过这样的比较,它在一个函数中会更清晰:

function isTestIdValid(){
   // your logic here - perhaps referencing observables directly?
   return (TestId() !== 3 || TestId() !== 4 || TestId() !== 5);
}

我不确定您的observable是什么命名的,否则只需将参数传递给要评估的函数。

然后你的标记将如下所示:

visible: isTestIdValid()

<强>更新

正如@Hans建议您也可以使用KO Computed来实现这一目标,这有点像:

this.isTestIdValid= ko.computed(function() {
      return (this.TestId() !== 3 || this.TestId() !== 4 || this.TestId() !== 5);
    }, this);

您需要对其进行调整以适合您的视图模型结构。

答案 1 :(得分:0)

尝试:

visible: TestId() !== 3 || TestId() !== 4 || TestId() !== 5