knockoutjs:如何使用boolean&&如果有条件?

时间:2015-01-15 08:21:37

标签: javascript jquery knockout.js

我正在开发knockoutjs,我想在数据绑定中使用boolean,这里是我的代码,但它不能正常工作

<p class="cmt-post" data-bind="if:deleteDate&&owner='1'">
     <span data-bind="text:deleteDate">
     </span>
 </p>

4 个答案:

答案 0 :(得分:1)

如果deleteDateowner是可观察的,则需要使用()对其进行评估。此外,您应该使用===而不是=,因为===用于比较相等性,并且还将确保类型相同。即<{1}}将为false,而1 === '1'为真。

1 == '1'

答案 1 :(得分:0)

你需要double equals来比较相等(就像在标准JS中那样,否则它是一个赋值):

 data-bind="if:deleteDate && owner == '1'">

答案 2 :(得分:0)

您指定所有者使用值==代替=

<p class="cmt-post" data-bind="if:deleteDate&&owner == '1'">
   <span data-bind="text:deleteDate"></span>

答案 3 :(得分:0)

我建议您将任何逻辑分离到viewModel而不是

因此,请考虑视图模型中的方法:

function ViewModel(){

  this.delete_date_visible = ko.pureComputed(
      this.getDeleteDateVisible,
      this
  )
};

ViewModel.prototype.getDeleteDateVisible = function(){
   return this.deleteDate() && this.owner == '1'
}

在视图中:

<span data-bind="if: delete_date_visible">...</span>

甚至

<!-- ko if: delete_date_visible -->
<span>...</span>
<!-- /ko -->
我觉得它看起来更干净。

使用视图模型的方法的纯计算,因为:

  • 您无需在模板中调用它
  • getter方法可以在视图模型中原生重用