我无法弄清楚如何在text
绑定中放置if语句。
<tbody data-bind="foreach: model.poCollection">
<tr>
<td>
<input type="checkbox">
</td>
<td data-bind="text: RlseNbr"></td>
<td data-bind="text: Clin"></td>
<td data-bind="text: PrchOrdNbr"></td>
<td data-bind="text: RqstnCntrlNbr"></td>
<td data-bind="text: {(DtCntrctDlvry == '0') ? 'a' :'b'}"></td>
</tr>
当我尝试将if语句放入其中时,不知道我做错了什么,数据不再显示。
答案 0 :(得分:7)
您没有提供足够的信息,但我们可以安全地假设以下两种情况之一:
DtCntrctDlvry = 0
;或DtCntrctDlvry = ko.observable(0)
如果你进行简单的绑定,绑定处理程序并不关心它是什么,例如:
<span data-bind="text: DtCntrctDlvry"></span>
但如果你开始把逻辑放在那里,他们做关心。以上情况分别要求:
普通属性:
<span data-bind="text: DtCntrctDlvry === 0 ? 'a' : 'b'"></span>
观测量:
<span data-bind="text: DtCntrctDlvry() === 0 ? 'a' : 'b'"></span>
在任何情况下,请参阅my answer to another question我认为如果将逻辑包裹在computed
内,你会更好,例如:
var ViewModel = function() {
var self = this;
self.DtCntrctDlvry = ko.observable(0);
self.DtCntrctDlvryText = ko.computed(function() {
return self.DtCntrctDlvry() === 0 ? "a" : "b";
});
}
并像这样绑定:
<span data-bind="text: DtCntrctDlvryText"></span>
PS。一些脚注:
==
,而您可能更喜欢===
?'0'
(零,但作为字符串)而不是0
(作为数字)的任何原因?在我的回答中,我假设两种情况你打算使用后者。如果没有,您可能需要调整我的解决方案。